Portable RF ID tag and barcode reader

ABSTRACT

A portable barcode and RF ID tag reader that gathers information about items to be purchased etc by reading barcodes or RF ID tags. A store host computer gathers information about items to be purchased from the portable barcode/ID Tag readers and then the items are bagged by the customer at the checkout stand or by employees of the store at the checkout stand or in a separate warehouse from which the customer picks up the order. The portable barcode/RF ID tag reader can also be used in authenticating articles by accessing a factory computer using a serial number for the article scanned from an RF ID tag on the article. The portable barcode/RF ID tag reader is comprised of a microprocessor coupled to a bar code reader, an RF ID tag reader, a spread spectrum RF transceiver, a communication port, an audible feedback device, a touchscreen or light pen and display, a thermal printer and a magnetic stripe card reader and a smart card reader.

BACKGROUND OF THE INVENTION

This application claims priority under 35 U.S.C. §119 of prior filedInternational Application Number PCT/US95/07292, filed under the PatentCooperation Treaty in the United States Receiving Office on June 6,1995, and entitled PORTABLE HANDHELD BARCODE SCANNER AND RF ID TAGINFORMATION GATHERING DEVICE, which itself claimed priority under 35U.S.C. §119 of a prior filed U.S. patent application entitled PERSONALSCANNER/COMPUTER FOR DISPLAYING SHOPPING LISTS AND SCANNING BARCODES TOAID SHOPPERS, filed Jun. 24,1993, Ser. No. 08/082,257, which issued asU.S. Pat. No. 5,424,524 on Jun. 13 1995.

The invention pertains to the field of digital scanning, computing, datacollection and data processing devices. More precisely, the inventionpertains to the field of devices for assisting shoppers in creatingshopping lists, scanning bar codes on products to be purchased etc.,keeping running totals of amounts spent and items from shopping liststhat have been picked up and numerous other useful functions.

One of the problems with shopping today is that it is inconvenient toconstantly make comprehensive shopping lists every time a shopping tripis to be made, and, without a shopping list, it is often difficult toremember all the items that need to be purchased. Also, it is difficultto know how much money is being spent compared to a budgeted amount asitems are placed in a shopping basket. During crowded shopping times,checkout times at grocery stores for example can be long especially whenthe shoppers ahead in line have many items.

It is also inconvenient to do comparison shopping for large numbers ofitems either for the same store over time or as between multiple storesat the same time. A study of changes in prices over time in a favoritestore would require the user to write down the prices of large numbersof items and date the lists and keep them and then write down thecurrent prices for the same items, preferably in the same order as theprevious lists and compare the lists. Likewise, a comparison of pricesbetween different stores would require physically visiting the differentstores and writing down the prices of many items in each store,preferably in the same order in each store.

Further, with the multitude of sources of coupons for discounts on itemson sale, it is a time consuming and tedious process to scan the localnewspapers etc. for coupons, cut them out and bring them to the storethat published the coupons to take advantage of the savings offeredthereby.

Therefore, a need has arisen for a device that can ease or eliminate theforegoing problems.

SUMMARY OF THE INVENTION

In accordance with the teachings of the invention, there is disclosed apersonal bar code scanning device which comprises a microprocessor andassociated control software coupled to a bar code reader, a display, anda bidirectional communication port/device, ROM or EPROM memory andrandom access memory. Preferably, the display comprises a touchscreenand the communication device is a modem or an infrared transceiver orinfrared red transceiver local area network interface. The bar codereading device is preferably a charge coupled device type reader whichcan image a bar code even on a curved surface and which has a built indecoder for converting the light and dark patterns of the bar code to anASCII string of characters encoded in the bar code. In some embodiments,the personal scanner will be implemented in the form of a palmtopcomputer with a keyboard, touchscreen and associated internal modem orinfrared transceiver local area network interface.

In one embodiment, the control software includes routines for displayingthe list of stored shopping lists, modifying a selected shopping list byadding or deleting items, or generating custom shopping lists startingfrom nil list. Other routines retrieve the current price list of thestore to be shopped. This may be done by modem in some embodiments, orby physical connection to the store computer in other embodimentsthrough the communication port. In other embodiments, the current pricelist can be downloaded by way of an infrared transceiver local areanetwork interface when the user enters the store and indicates that theprice list is to be downloaded. Another routine receives user inputindicating when an item is to be scanned, and sends a command to the barcode scanner to cause the bar code to be scanned. The resulting ASCIIstring from the decoder in the bar code scanner is received anddisplayed and compared to the items on the currently selected shoppinglist. In some embodiments, fuzzy logic is used to display all possiblematches where the prose used to describe the item on the shopping listdoes not exactly match the text used in the bar code to describe theitem scanned. Another routine alters the display of the item scanned toindicate that it has been scanned and then looks up the item on thecurrent price list and adds its price to a running total which isdisplayed to the user. Another routine allows the user to enter adesired budget expenditure number as a guide in some embodiments.

When the user indicates by a signal such as touching a particular partof the touchscreen that he or she is done shopping, any item on theshopping list which has not been scanned is blinked or otherwiseindicated on the display to remind the user to locate and scan such anitem for purchase prevent forgotten items.

After all desired items have been scanned, the stored descriptiveinformation and price information are downloaded from the personal barcode scanner to the store computer either through a hardwired connectionbetween the communication port of the personal scanner and acommunication port of the store computer or through an infraredtransceiver local area network interface.

In alternative embodiments, when the user downloads a price list, a listof current discount coupons is also downloaded with the price list. Thissaves the cost to the stores of publishing the coupons and simplifiesthe life of the user. When the user enters the store and scans an item,the description of the item is used to automatically scan not only theshopping list and price list but also the current coupon list todetermine if any discounts apply. If a discount coupon matching thescanned item is found, the discount is automatically applied to theprice of the item before the running total is updated.

In the preferred embodiment, the price list is data compressed usingknown compression algorithms used in FAX machines prior to transmissionto the Personal Scanner™ device and is stored in compressed form. Thelist can be decompressed in the Personal Scanner™ device prior to use inupdating the running total as each item is scanned or during theprocessing to match a scanned item to items on the shopping list.

In the preferred embodiment, a credit card facility is provided wherebythe user can enter credit card information needed for a purchase for oneor more credit cards in the Personal Scanner™ device or can changecredit card information already stored. After all shopping is completed,the user may select one of the stored credit cards to use by touchingits entry on a displayed list on a touchscreen. The card information forthe selected card is then downloaded to the store computer for use inpaying for the purchase.

In an alternative embodiment, the Personal Scanner™ device may be usedto shop for real estate. In this embodiment, signs in front of housesfor sale will have bar codes thereon which give the house ID. The userscans the bar codes of all houses in the neighborhoods that appeal tothe user or which he or she can afford, and the bar codes are stored.The scanned bar code information includes not only the houseidentification (usually its street address) but also the phone number ofa real estate network computer which stores the details of the listing.Later, the user uses an internal or external modem to dial the computerassociated with each listing by touching the identification of aparticular listing on the touchscreen of the Personal Scanner™ device orby using a lightpen, keyboard etc. The computer storing the details ofthe listing is then dialed, and the record for the listing of interestis downloaded into the Personal Scanner™ device and displayed so thatthe user can determine details of interest such as the square footage,number of bedrooms and bathrooms, amenities etc.

In some embodiments optimized for grocery shopping, the PersonalScanner™ device is mounted on a shopping cad for use by user's who donot own their own devices.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a top view of one embodiment of a Personal Scanner™ device.

FIG. 2 is an end view of the device of FIG. 1 showing the preferredplacement of permanent magnet security strip disarming devices and thescanning window.

FIG. 3 is a block diagram of typical Personal Scanner™ type device.

FIG. 4 is a flow chart of the processing which selects from prestoredshopping lists, allows modification of those lists or generation ofcustom lists from a nil list.

FIG. 5 is a flow chart of processing to retrieve the current price list,scan an item, look for matches on the shopping and price lists, displayforgotten items and download data from scanned items to the storecomputer.

FIG. 6 is a flow chart of processing to retrieve another price list froman earlier time or another store and compare prices item by item anddisplay items that are higher and lower in price.

FIG. 7 is a flow chart for processing in deleting an item from the listof items that have been scanned.

FIG. 8 is a flow chart for processing to allow a user to enter a budgetnumber.

FIG. 9 is a flow chart of processing to automatically apply coupondiscount items for any scanned item found on the current coupon list.

FIG. 10 is a flow chart representing processing to scan house bar codesand download house listing details after all candidate houses have beenscanned.

FIG. 11 is a flow chart representing processing to enter/change creditcard information and download credit card information to a storecomputer for use in completing a purchase.

FIG. 12 is a flow chart of processing of fuzzy logic used for matchingprecise store descriptions mapped to scanned bar codes encoding productidentifications with somewhat less precise descriptions of desired itemson a user defined shopping list.

FIG. 13 is a top view of an embodiment of the Personal Scanner™ deviceusing a touchscreen instead of a light pen for selection processes anduser input.

FIG. 14 is an end view of the embodiment shown in FIG. 13.

FIG. 15 is a perspective view of a version of the Personal Scanner™device for use in permanent mounting on a shopping cart for users who donot own their own devices.

FIG. 16 is an overall perspective view of a commercial embodiment of aPersonal Information Device (PID) according to the teachings of theinvention.

FIG. 17 is an overall perspective of a base unit for charging thePersonal Information Device of FIG. 16 and for communicating data fromthe PID to a store host computer.

FIG. 18 is a perspective view of the PID as docked with the base unitfor charging and communication with the host through the base unit.

FIG. 19 is a block diagram of the electronics of the PID embodiment ofFIG. 16.

FIG. 20 is a block diagram of the basic sections of an RF ID tag.

FIG. 21 is a diagram of the relative positions of the infraredtransceiver in the charging unit and PID.

FIGS. 22 and 23 are side view diagrams of the base unit.

FIG. 24 is a block diagram of the infrared transceiver circuitry forcommunication of data between the PID and the base unit.

FIG. 25 is a block diagram of the spread spectrum transceiver used inthe PID to communicate directly with the host computer.

FIG. 26, comprised of FIGS. 26A, 26 B1, 26 B2, 26C-26P is a flow chartof the processing of the operating system program that coordinatesactivities by the microcomputer in controlling and communicating theother elements of the portable information gathering device.

FIG. 27 is a diagram of a method of using a PID in a new, faster, moreconvenient way of shopping.

FIG. 28 is a diagram of a block diagram of a new type of smart card withan RF ID tag embedded therein instead of using electrical contacts.

FIGS. 29A-29C is a flow chart of a process shopping using a PID to selfscan items to be purchased and communicate with the store host computerto pay for the goods at checkout time by either smart card, credit cardor cash.

FIG. 30 is a block diagram of a security tag deactivation circuit.

FIG. 31 is a block diagram of a security portal for use at the storeexits for a store using the PID method of shopping.

FIG. 32 is a block diagram of a method of using PID's for shopping andimplementing security via weighing the total order.

FIG. 33 is a flow diagram of the security method carried out by the PIDand host computer using weight of total order verification.

FIG. 34 is a diagram of a method of shopping using PID's and having thestore bag the purchased items for the customer to implement another formof security.

FIGS. 35A and 35B are a flow chart of the process carried out by thePID, store host computer and a satellite computer at the bagginglocation to implement the method of security shown in FIG. 34.

FIG. 36 is a flowchart of an autosort routine to maximize the efficiencyof the use of the volume in the bags by placing heaviest items in thebags first and then doing a sort of Tetris game in comparing the volumesand shapes of the remaining items and trying combinations that willmaximize the efficiency of use of the bag volume.

FIG. 37 is a diagram of a way of bagging purchased items that have hadthe bag volumes optimized, bagging being done by store personnel or arobot mechanism.

FIG. 38 is a flow chart of the process represented by FIG. 37 andcarried out by a robot that using optimized bag lists to take items offshelves in the proper order and deliver them to a person or anotherrobot for bagging.

FIG. 39 is a method of shopping using PIDs' to obtain more informationabout a product from the store host computer.

FIG. 40 is a flow chart of a process carried out by a PID, anauthentication kiosk and a factory host computer of authenticating anitem to be purchased as genuine.

FIG. 41 is a flow chart of a process carried out by a computer in anauthentication kiosk and a factory computer for public key encryptedsecure authentication communications.

FIG. 42 is a flow chart of a method carried out by PIDs that issue smartcard event tickets, gate computers at the event and possibly PID'scarried by ushers to use smart cards as event tickets.

FIG. 43 is a diagram of a PCMCIA/credit card/smart card receiverapparatus for use in the PID according to the invention.

FIG. 44 is a block diagram of a typical circuit that may be used for theRF ID tag reader 314 in FIG. 19.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

Referring to FIG. 1, there is shown a plan view of a device according toone embodiment of the invention where a light pen is used to provideuser input. In other embodiments, a touchscreen, mouse, stylus or otherchoosing device may be used to provide user input. FIG. 2 shows an endview of the device looking into a window through which bar codes arescanned. FIG. 3 shows a block diagram of the electronic structure of thepreferred embodiment of the Personal Scanner™ device. Hereafter, thegenus of devices according to the teachings of the invention may bereferred to as the Personal Scanner™ because the technology is alsouseful for other applications such as shopping in department stores,taking inventory, etc. The purpose of the Personal Scanner™ in the mostbasic embodiments is to aid shoppers in generating shopping lists andshopping to fill those lists while keeping track of their totalexpenditures. This is done by having the user scan the bar code labelson items taken from the shelves and placed in the shopping cart. ThePersonal Scanner™ comprises, in the simplest embodiments, of a bar codereader coupled to a specially programmed digital computer which can usethe output of the bar code reader to identify the items placed in thebasket and compare them to the currently selected shopping list. Theuser can generate one or more shopping lists by providing user input viasome feedback method to select or identify the items to be put on thelist. In the embodiment shown in FIG. 1, this is done by the user via alight pen 10. The shopping list is then stored in RAM 43. Alternatively,preprogrammed shopping lists may be stored in nonvolatile memory such asROM 48. Likewise, in embodiments using a palmtop computer, the RAM 43and/or ROM 48 may be supplemented or replaced by memory cartridgescoupled to the palmtop device via the PCMCIA standard integrated circuitmemory expansion card interface. These external memory cartridges may beused to store shopping lists such that a collection of differentshopping lists larger than the capacity of the internal memory can holdmay be stored in a nonvolatile manner.

A light pen is not critical to the invention and any other way for usersto provide input to the Personal Scanner™ such as touch screens,keyboard, slewing alphabets such as are used on the ARNAV R50 loran etc.or telephone type keyboards such are in common use on telephones andsome GPS units such as the Garmin 100 AVD GPS portable navigator mayalso be used. The purpose of user feedback to the Personal Scanner™ isto allow users to generate shopping lists by selecting items fromprestored lists which list all possible items that a shopper may want.By selecting some smaller subset of items that the user customarilyconsumes, smaller personalized shopping lists may be generated. Multipleshopping lists may be generated and stored and displayed on the screen12 when needed. Typically, the screen is a liquid crystal or supertwistdisplay but any other display technology compatible with the availablebattery power will suffice. To generate one of these lists from auniversal list, the universal list is called to the screen by pressingbutton 14 on the light pen or another button (not shown) on the frontpanel for touch screen or other embodiments with no light pen. The userthen selects items from the universal list for inclusion in the "shortlist" being composed. In light pen embodiments, the items are selectedfrom the universal list are selected by touching the box 16 associatedwith a particular item or the item itself. In touchscreen embodiments,the user's selections are sensed by sensing which item on the display istouched by the user. The item then will appear on the short list with abox beside it that is coded on the display in a particular manner suchas being filled in as shown in FIG. 1. In the preferred embodiment, atouchscreen is used so that the user need only touch the name of theitem itself or an associated item "button" next to the name of the itemwith his or her finger or an ink pen, pencil etc. to indicate aselection to the Personal Scanner™.

In even simpler embodiments, only one shopping list is used which couldbe selected by the user as indicative of the types of foods or otheritems that user consumes normally. In these embodiments, the PersonalScanner™ would be offered in different models, each with a differentshopping list. The user would select the model to use or purchase basedupon the type of shopping list stored therein.

When the user is ready to shop, the user takes the personal shopper tothe grocery store and selects items from the shelves and puts them inhis or her shopping cart. As the items are being put into the shoppingbasket, the bar code label on the package is scanned with a bar codescanner the window for which is shown at 18 in FIGS. 1 and 2. In thepreferred embodiment, the bar code scanner within the Personal Scanner™is a charge coupled device type because of its lower cost and lowerpower consumption and because it can tolerate curved surfaces such asare found on cans. In alternative embodiments, the bar code scanner canbe a laser diode based scanner, LED contact scanner, optical or magneticscanner or character reader.

To scan an item using the CCD type bar code scanner, the user places thewindow 18 in contact with the bar code label on the package, and pressesbutton 20 to start the scan. The bar code is then scanned and theresulting signals are decoded into the ASCII characters etc. which wereoriginally encoded into the bar code (any other code such as EBCDICcould also be used). The ASCII characters identify the item, and arecompared to the shopping list for a match. If a match is found, then thebox beside the matching item on the shopping list has its displaychanged to another coding indicating the item has been scanned and is inthe basket. Typically, this will be an X inside the box, but any othercoding can be used.

In some embodiments, a running total of the cost of all the items in thebasket is kept and shown on the screen. In the embodiment of FIG. 1, therunning total is shown at 22, and the price of the individual item justscanned is shown at 24. The running total is generated by comparing theidentity of the item derived from the bar code identity to a price list.The price list is stored in the handheld scanner. In some embodiments,the price list is downloaded by the handheld scanner upon entry to thestore. This can be done by direct connection to the store's computer viaan RS232 port shown symbolically at 40 in FIG. 1. In other embodiments,a wireless downloading process can be performed upon entry to the store.In this embodiment, an infrared transceiver such as the PhotonicsInfrared Transceiver™ is included with the handheld scanner. Likewise,the store's computer coupled to its laser scanners also includes aninfrared transceiver. When the user enters the store, he or shedownloads the price list by touching the download button 42 on thescreen with the light pen or a physical button (not shown) locatedelsewhere. The Personal Scanner™ then downloads the store's currentprice list using the infrared transceiver or the RS232 port. In someembodiments, the price list can be entered by hand when an item isscanned.

In the preferred embodiment, the price list is data compressed usingknown compression algorithms used in FAX machines prior to transmissionto the Personal Scanner™ device and is stored in compressed form. Thelist can be decompressed in the Personal Scanner™ device prior to use inupdating the running total as each item is scanned or during theprocessing of FIG. 12.

In some embodiments, the price list information downloaded from thestore can be used to make the user a more informed shopper. For example,the items that are on sale or which have risen in price since the lastdownload operation from the same or a different store can be displayedin separate displays or their status can be indicated on the shoppinglist. For example, the items on the shopping list that are on sale orwhich have a lower price than the same item price at a different storefrom which the price list was last downloaded can be flashed, while theitems that have risen in price can be highlighted with reverse video.

In some embodiments, the user can designate a budget available to spend.Such a budget figure is shown at 26. In the embodiment shown in FIG. 1,the budget figure can be set by the user using the light pen andselecting the numbers in the budget figure serially using the displayednumbers 0-9 and the decimal point shown at 28 in window 30. Likewise,the letters of the alphabet are shown at 32 in window 30. These letterscan be selected individually to make up an item to add to the shoppinglist.

Alternatively, the shopping list can be generated from a null list or anexisting list can be expanded by scanning items that the user wishesincluded on the list one by one. As each item is scanned and its barcode is decoded, the identity of the item appears in subwindow 34. Theuser can then add the item displayed in the subwindow 34 by touching the"store item" box 36.

Referring to FIG. 4 there is shown a flow chart for processing by thesimple embodiment of the Personal Scanner™ shown in FIG. 3. When poweris first applied to the unit as symbolized by block 52, themicroprocessor 40 scans the ROM 48 to determine the number and names ofall the available "fixed" shopping lists, if any, and scans batterybacked up RAM 43 to determine the names of any custom shopping listsstored therein. The names of all the available shopping lists are thendisplayed on a sign-on screen. This process is symbolized by block 54.

The user then selects the shopping list desired by touching a boxdisplayed next to the list on the list itself with the light pen orthrough any other method of selection. This process is symbolized byblock 56.

The selected shopping list is then displayed and moved into an area ofRAM 43 reserved as a scratchpad RAM, as symbolized by block 58.

The user is then asked whether there are any changes to the list byblinking or reverse video or color change of the word "changes"displayed at 59 in FIG. 1. The user then touches the "yes" or "no" boxdisplayed next to the word "changes". This process along with theprocess of sensing the answer to the question is symbolized by block 60.

If there are to be changes, the microprocessor asks the user whether thechanges are to be spelled out by the user by selection of letters and/ornumbers from the display window 30 or whether the user wishes to pickfrom the database of all possible choices. This process is symbolized byblock 62 and block 64. If the user chooses to spell out the desiredchanges, path 66 is taken to block 68 which represents the process ofreading the user's input selections. In the embodiment of FIG. 3, thisinput will be by light pen selection of letters and/or numbers displayedin window 30 in FIG. 1. In other embodiments, a touch-screen will besubstituted for display/light pen combination 12/10 in FIG. 3, and theprocess of sensing user input will be the process of sensing touches tothe screen in display window 30 or in window 13 is the user chooses toenter changes by displaying the universe of possible choices in window13. In other embodiments such as an embodiment using a EPSON palmtopcomputer with a built in touchscreen and keyboard, the user's input maybe entered by an optional keyboard 9 or through touches to thetouchscreen.

If the user chooses to make the changes by picking items from thedatabase, path 68 is taken to the process represented by block 70. Theprocessing of block 70 comprises displaying the next page of items fromthe database along with a done query which inquires whether the user hasfound the item he or she wishes to add to the list. Block 72 representsthe process of reading the user's selections from the light pen, touchscreen etc. and adding the selected item to the shopping list. Block 74represents the process of determining whether the user is done selectingfrom the items displayed in the window 13 or is done selecting lettersand numbers from the window 30. This done query is shown at 75 inFIG. 1. If the user is not done, processing returns to block 64 wherethe user is given the choice of making further additions either bychoosing items displayed from the database or by spelling out theadditions as described above.

If the user is done making additions, block 76 is performed to determineif there are any deletions. If deletions are to be made, the processingrepresented by block 78 is performed to sense the selected itemsdesignated by the user through the light pen or touch screen and todelete them from the selected shopping list. Block 80 processing isperformed to determine if the user indicates he or she is done deleting.If not, processing returns to block 78. If so, processing proceeds onpath 82 to the process represented by the flow chart of FIG. 5 to scanitems from the shopping list into the Personal Scanner™. Processing alsoproceeds along path 82 if the user indicates during the processing ofblock 76 that he or she has no deletions or if the user indicated in theprocessing represented by block 60 that no changes to the selectedshopping list were necessary.

Referring to FIG. 5, there is shown a flow chart for processing forretrieving the store price list, comparing the price list to anotherprice list and for scanning in the items put in the user's basket anddisplaying the running total of items scanned. Block 84 represents theprocess of retrieving the store's current price list and giving the userthe opportunity to set the budget number which appears at 26 on thedisplay. Setting the budget number only occurs if the user touches theset budget box 27 on the display. If he or she wishes to set a budget,the numbers comprising the budget number are individually selected fromthe numbers and decimal point displayed at 28 in window 30. The PersonalScanner™ device assumes that the user is done entering budget numberswhen a decimal point and two numbers to the right of the decimal pointhave been selected. In embodiments having a keyboard such as embodimentsusing the EPSON palmtop computer, the user may enter only a dollarfigure and press enter at which time the machine will assume that aneven dollar amount is selected for the budget number. Retrieving thestore's current price list can be done in any one of several way using adata communication interface and port 85 in FIG. 3. In some embodiments,the data communications interface and port is a modem and a serial orparallel bidirectional data port with appropriate driver circuitry andsoftware. In other embodiments, the data communications interface andport is an infrared transceiver such as the one commercially availablefrom Photonics of San Jose, Calif., the details of which are herebyincorporated by reference. Some information on infrared and radiowireless data transmission is publicly available through the IEEE 802.11Wireless Networking Work Group, the details of which are herebyincorporated by reference. The transmitted and received infraredpatterns comprise a series of data symbols transmitted serially usingpulse position encoding. Preceding the data is a timing pattern thatallows the receiving unit to synchronize its internal clock with theclock of the transmitting unit. The infrared transmission is diffuserather than directed and data rates of 1 Megabit/second can be obtained.Any infrared or radio wireless data transfer device that is capable ofdownloading the store price list in a reasonable amount of time willsuffice for purposes of practicing these type embodiments. The detailsof the particular data communication interface and port are not criticalto the invention, and selection of what type port to use depends uponthe desired mode of operation for the device. In some embodiments, theprocessing of block 84 represents the process of a user dialing thecomputer of the store of interest using either an internal or externalmodem (not shown) coupled to the microprocessor 40 through datacommunications interface and port 85 and downloading the store's currentprice list by dialing the store computer. In embodiments, using theEPSON palmtop computer an internal modem is preferred, but inembodiments using the embodiment shown in FIG. 1, an external modem ispreferred. In embodiments using a palmtop computing device, the modemmay be attached through a PCMCIA Type II interface. In embodiments wherethe data communications interface and port 85 is a Photonics InfraredTransceiver™ (available commercially from Photonics Corporation, 2940North First Street, San Jose, Calif. 95131, the details of which arehereby incorporated by reference), the processing represented by block84 is the process of logging onto the store's local area network ininfrared wireless fashion when the user enters the store and downloadingthe store's price list.

Query 86 represents the process of scanning the keyboard and waiting forthe scan button 20 in FIG. 1 to be pushed. When it is pushed, thePersonal Scanner™ assumes that the bar code of the item to be placed inthe basket has been placed within range of the scanning window 18, andscanning proceeds in a known fashion. In alternative embodiments, thebutton 20 can be eliminated and a scanner with proximity sensingcapability may be substituted. Such scanners are commercially availableand sense when they have been placed adjacent to a bar code. The detailsof these scanners are hereby incorporated by reference. Such scannersautomatically scan and decode any bar code placed within view. Theprocess of scanning the bar code and converting the resulting pattern ofsignals from the bar code scanning apparatus to ASCII (or EBCDIC etc.)characters is well known in the art. Basically, the bar code scanner 46converts the bars and spaces of the bar code pattern to a signalwaveform that makes transitions between two digital levels in apredetermined unique pattern for each unique bar code. This unique barcode pattern waveform is applied to a decoder which converts the patternto a series of ASCII characters, and usually calculates a checksum tocheck the validity of the decoded characters and releases the decodedcharacters after verifying a correct checksum. Equipment to do this iscommercially available from several sources including Densei NipponElectric Industries of Tokyo, Japan, the details of which are herebyincorporated by reference. Generally, bar code scanners come in threeclasses: lasers which are expensive and consume large amounts of power,LED devices which must be physically moved past a bar code and whichconsume large amounts of power and CCD imaging devices which image theentire bar code and then electronically scan it and convert it to theunique waveform representing the bar code. It is the CCD class of barcode scanners which work best for the Personal Scanner™ applicationbecause they need not be in contact with the bar code and they consumeless power than many other types of bar code scanners. Densei makes CCDtype bar code scanners such as the Model BCH5532 Bar Code Reader. Thedetails of the Densei line of CCD bar code scanners in general, and theModel BCH5532 scanner in particular are hereby incorporated byreference. Other types of bar code scanners will also work such as thebar code scanner disclosed in U.S. Pat. No. 4,204,636 to Hayman, whichis hereby incorporated by reference. After a bar code has beensuccessfully scanned and decoded, the microprocessor 40 sends a suitablewaveform to the piezoelectric sounding device 89 in FIG. 3 to give theuser an audible tone that the bar code has been successfully scanned.

If the user does not press the scan button for a predetermined time of,for example 30 seconds, the microprocessor displays a query as towhether the user is done shopping as symbolized by block 87. If the useris done, he or she presses the button 105 on the front panel when he orshe has reached the checkout clerk and connected the Personal Scanner™device to the store's register. This causes the processes symbolized byblocks 106 and 108 to be performed to transfer the scanned items to thestore registers as will be described further below.

Block 88 represents the process of scanning the bar code on the packageto be placed in the cart and converting the light and dark bars of thebar code from an analog waveform to a collection of digitalrepresentations of ASCII characters. When a bar code has beensuccessfully scanned, a beep tone is emitted from a piezoelectricsounding device 89 in FIG. 3. Block 90 represents the process ofcomparing the ASCII characters of the bar code to the active shoppinglist currently stored in memory 43. Block 92 represents the process ofdetermining if there is a match between the ASCII string and any entryon the shopping list. If there is, then the display is altered toindicate the item has been placed in the basket, as symbolized by block94. If there was no match, the user is asked whether he or she wishes toadd this item to the shopping list as symbolized by block 96. This isdone by displaying some indication that the item scanned is not on theshopping list. Typically this is done by displaying the word ADD on thedisplay in some designated area or lighting an ADD LED (not shown inFIG. 1) on the front panel and displaying "yes" and "no" option boxes onthe display. If the user indicates the item is to be added to theshopping list, the ASCII string from the decoder is added to theshopping list as symbolized by block 98. If the user elects not to addthe item to the list, processing returns to block 86 to scan the frontpanel controls for another push of the scan button. After block 98processing is completed, the processing of block 94 is performed toalter the display to indicate the item has been placed in the basket.

Next, the price of the item just scanned is looked up on the currentprice list corresponding to the store from which the item is beingpurchased as symbolized by block 100. The price of the item is thenadded to the running total for all the groceries placed in the basket,and the running total is displayed at 22 on the display as symbolized byblock 102. In some embodiments, if the user wishes to buy more than oneof the scanned item, each item must be individually scanned, and thisembodiment is assumed for the flow chart of FIG. 5. In otherembodiments, another step is present where the computer asks the userhow many of the item scanned have been placed in the basket by writing aquery to the display to which the user responds by touching a number inthe window 30 in FIG. 1 or touching a number key on the keyboard. Themicroprocessor then multiplies the price of the item by the number ofitems placed in the basket and adds the result to the running total.

For unpackaged items such as fruit and vegetables, the grocery storemust have a produce clerk with a scale and bar code machine who isavailable for bagging and labelling produce with bar codes which can bescanned. This clerk is available to shoppers who bring produce to theclerk. The clerk weighs and bags items that are sold by the pound andcreates a bar code which encodes the item description and its totalprice. Preferably, the clerk will have available a scale which weighsthe item and automatically multiplies the weight by the current priceand outputs a properly encoded bar code. Such scales are availablecommercially from Global Equipment of Oakland, Calif. (Ph(510) 271-0030,distributors for the Kobota FP900 series scale, the details of which arehereby incorporated by reference. Alternatively, the shopper can weighthe item on a scale, input the weight and input the unit price. ThePersonal Scanner™ device will then multiply the weight by the unit priceand add the result to the running total.

Block 104 represents the process of querying the front panel display orcontrols for a signal from the user that he or she is done shopping. Inthe embodiment depicted in FIG. 1, this signal is generated with theuser presses button 105 on the front panel. When this occurs, theprocessing of block 106 occurs to display forgotten items and unscan anyitem the user wishes to place back on the shelf. Typically, theforgotten items are displayed by blinking or converting to reverse videothe forgotten items from the shopping list, i.e., those items on thelist which were not matched with any scanned item. The user may alsounscan any item in the cart at this stage by touching the item to beunscanned on the display twice in short succession. This indicates tothe Personal Scanner™ device that the touch to the display is not arandom touch. If two touches are detected within a shod time, the itemtouched is removed from the list of items scanned, and a downwardadjustment in made in the running total. Next, the processing symbolizedby block 108 is performed to download the descriptions and prices of theitems scanned to the store's register so that the order can be paid forby the shopper. In the preferred embodiment, the downloading process iscarried out by coupling the Personal Scanner™ device to the storeregister through RS232 port 40 in FIG. 1 by a cable. In alternativeembodiments, the scanned items may be transferred to the store registerthrough a Photonics Infrared Local Area Network Wireless Interfacecoupled to Data Communications Interface and Port 85 in FIG. 3. Thecheckout clerk then physically checks each item in the basket againstthe list downloaded from the--Personal Scanner™ device and makes anynecessary corrections. The bill is then totalled and the customer paysthe clerk.

FIG. 6 shows a flow chart for an alternative embodiment of PersonalScanner™ device which can compare one store price list against the pricelist from another store or an earlier price list from the same store.Block 84 represents the same process as it did in the flow chart of FIG.5. A variation from the flow chart of FIG. 5 for this embodimentinvolves the option to store the current price list in a database storedin nonvolatile memory. Typically, space in battery backed up randomaccess memory 43 in FIG. 3 will be reserved to store one or more oldprice lists from the shopper's favorite store or from another store.Block 111 represents the process of inquiring of the user whether tostore the current price list in the database. If the user wishes tostore the list, he or she touches the "yes" button on the front paneldisplay at 113 in FIG. 1. This causes the data defining the currentprice list to be stored in RAM 43 (or on a hard disk in embodimentsusing palmtop computers) with the current date as represented by block117. If the shopper does not want the current price list stored in thedatabase, the "no" box at 115 in the display of the embodiment shown inFIG. 1 is touched physically or with the light pen.

Block 110 represents the process which is performed after the processingof block 111 is performed if the user chooses not to store the pricelist, or after the processing of block 117 is performed if the userchooses to store the price list. The process of block 110 consists ofretrieving a price list from another store or from a database ofprevious price lists from the store currently being shopped. In the caseof retrieving a price list from another store, this may be done by modemas described above by dialing the computer of the store in question orby physically entering the store and downloading their price listthrough the RS232 port 40 in FIG. 1 or through the Photonics InfraredTransceiver LAN Interface. In the case of retrieving an old price listfrom the store currently being shopped, the microprocessor will querythe user as to which price list to retrieve in the case there are morethan one old price list stored in the database. If there is, the usermay respond by selecting a date using the numbers displayed at 28 inFIG. 1.

Block 112 represents the process of comparing the current price listitem by item with the price list from another store or a previous pricelist from the same store associated with the current price list. Thecomparison process indicates which items have risen or fallen in price.Items which have risen in price are displayed in some appropriatefashion such as reverse video while items which have fallen in price aredisplayed in another way such as by blinking the entry etc.

One of the possible benefits of use of the Personal Scanner™ device isthat it may make it possible for grocery stores to reduce theirheadcount in using fewer checkout clerks since the checkout line willmove much faster. Obviously because the Personal Scanner™ device canelectronically transfer the information therein to the store registermuch faster than a checkout clerk can scan each item in a shopper'sbasket, the checkout lines should move much faster. One concern grocerystores will have of course is in the area of security. To preventshoppers from putting things in their carts which have not been scannedand then leaving the store with them, in one alternative embodiment, asecurity strip deactivation system is employed. In the preferredembodiment, the security strip is a magnetic strip upon which otherinformation such as the unit price etc. may be printed. These magneticstrips, when not deactivated and passed through an alternating currentmagnetic field, cause intermodulation products which can be detected andwhich set off alarms. These magnetic strips can be deactivated so thatthe intermodulation products are not created by exposing them to a D.C.or permanent magnet field. Accordingly, in embodiments in which thesecurity strip deactivation system is used, two or more permanentmagnets 120 and 122 are mounted on the end of the Personal Scanner™device adjacent to the scanning window 18 as shown in FIGS. 1 and 2.These magnets are permanent magnets and each has a north and south pole.The magnets 120 and 122 are mounted such that their north and southpoles face in opposite directions so as to strengthen the magnetic fieldthat they create in front of the scanning window 18. In other words, ifpermanent magnet 120 has its north pole facing inward toward the casingof the Personal Scanner™ device, then permanent magnet 122 will bemounted to have its south pole facing inward toward the casing. Such asystem is disclosed in U.S. Pat. No. 5,187,354, which is herebyincorporated by reference. For embodiments using memory which issensitive to magnetic fields such that data might be lost such as harddisks or floppy disks used in palmtop computers adapted to the PersonalScanner™ functions, it is preferred to provide some magnetic shieldingbetween the magnets 120 and 122 and any memory which is magneticallysensitive. Such shielding can be some metal which prevents magneticfield lines from penetrating therethrough.

For items which are to be unscanned and put back on the shelf with thisembodiment, it will be necessary for the store to re-magnetize thesecurity strip before putting the item back on the shelf.

Of course the above described security system is subject to abuse byunscrupulous shoppers who may deactivate the security strips by puttingthe Personal Scanner™ device scanning window close to the security stripto deactivate it but not pressing the scan button to actually scan thebar code. To prevent this, the permanent magnets 120 and 122 in FIGS. 1and 2 can be replaced with D.C. magnet coils which create D.C. magneticfields only when the scan button is pushed. In this embodiment, pushingthe scan button simultaneously cause bar code scanning to occur androuting of direct current through the coils of electromagnets mounted inthe positions of magnets 120 and 122 to create the required D.C.magnetic field.

Referring to FIG. 7, there is shown an alternative embodiment for asecurity system for items to be unscanned. In this embodiment, thePersonal Scanner™ software automatically assumes that any item on theshopping list displayed as "scanned" is to be unscanned if the usertouches it twice in rapid succession on the touchscreen or with thelight pen. The process of monitoring for such an event is symbolized byblock 130. If this event does not occur, control is passed to block 108in FIG. 5. If it does occur, then the processing of block 132 isperformed to store any item(s) to be unscanned in a special scratchpadmemory or database of such items. Thereafter, the unscanned items aredownloaded to the store register in a separate transaction from theitems that are scanned and the shopper intends to purchase as symbolizedby block 134. The checkout clerk then requests that the shopper hand theitems which were unscanned to him or her for placement back on theshelves.

Referring to FIG. 8, there is shown an alternative embodiment for theprocessing of block 84 in FIG. 5 to automatically download coupon lists.In this embodiment, the processing of block 84 in FIG. 5 is replaced bythe processing shown in FIG. 8. When the user enters the store andattaches the Personal Scanner™ device to the store local area networkvia port 85 in FIG. 3 either by cable or through the Photonics InfraredTransceiver LAN interface or when the user dials the stores computer bymodem and downloads the store's current price list, he or she alsoreceives the current list of "coupons", i.e., the list of itemscurrently discounted. This list is stored for later comparison to eachitem scanned. This process of downloading the price list and coupon listis symbolized by block 140 in FIG. 8. Block 142 symbolizes the processof prompting the user for the budget number and receiving the user'sinput.

FIG. 9 represents the processing which occurs in place of blocks 100 and102 in FIG. 5 in embodiments where automatic coupon accounting isemployed. Block 150 represents the process of looking up the itemscanned on the current price list. Next, the item scanned is compared tothe current coupon list downloaded in block 140 as symbolized by block152. Any match is detected in block 154. If there is a match, the coupondiscount percentage or absolute amount is applied to the current price,and the result is added to the running total as symbolized by block 156.If there is no match to the coupon list, the current price of the itemscanned is added to the running total as symbolized by block 158. Afterthe processing of either block 158 or 156, processing control is passedto block 104 in FIG. 5.

Referring to FIG. 10, there is shown a flow chart for processing for anembodiment of a Personal Scanner™ device useful for shopping for realestate. In this embodiment, real estate signs would include bar codesthat provide a house or property identification code and the area codeand telephone of a computer in a real estate network which storesdetails about the listing. The user would be able to scan and store thebar coded information of properties in which he or she was interested inthe neighborhoods of interest, and download the details about theproperty and review it before ever calling a real estate agent.

The process of FIG. 10 starts with the user placing the PersonalScanner™ within range of the bar code on a real estate sign and pressingthe scan button (no processing to pick, display and modify a shoppinglist is present in this embodiment), as symbolized by block 160. Theunit sits and idles until this happens. When the scan button is pushed,the bar code on the sign is read, decoded and the ASCII house ID and thetelephone number of the pertinent computer are stored in a database inscratchpad, battery backed up RAM. This process is symbolized by blocks162 and 164. The user is then queried in block 166 as to whether a houseis to be previewed. If the user answers no, control is returned to theloop which waits for the scan button to be pushed. If the user answersyes, the list of all house ID's is displayed by the process symbolizedby block 168, and the user can highlight one of them to preview bytouching the particular ID on the touchscreen or with the lightpen.Preferably the house IDs are the street addresses of the house to helpthe user remember which house is which if multiple houses have beenscanned.

The processing symbolized by block 170 represents the process of usingan internal modem or an external modem coupled to the port 85 in FIG. 3to dial the computer phone number associated with the house ID which hasbeen highlighted and log on. The house ID is then passed to the computerin block 172, and the details of the house listing are downloaded suchas square footage, number of bedrooms, fireplaces, amenities and price.These details are displayed, and in a separate area of the display, aquery is displayed regarding whether the user wishes to preview anotherhouse, as symbolized by block 174. If the user answers no, control ispassed back to block 160. If the user answers yes, the processing ofblock 176 is performed to redisplay the list of houses so as to allowthe user to select another house. After the user selects another house,the ID is read and the Personal Scanner™ determines if the record forthat house is stored on the same computer as the last house previewed assymbolized by block 178, if it is, the house ID is sent to the samecomputer to which the user has already logged on and the house record isdownloaded and displayed as symbolized by block 180. If the house recordis stored on a different computer, the Personal Scanner™ device hangs upand dials the computer associated with the highlighted house record assymbolized by the processing of block 170. Thereafter, processing is aspreviously described.

Referring to FIG. 11, there is shown a flow chart for processing toenter and change credit information and download credit card informationto the store computer at the time a shopping order is to be paid. Block190 represents the process of prompting the user to determine if theuser wishes to enter credit card information for a new credit card orchange information on an old credit card or specify a credit card withwhich to pay the bill. If the user answers that he or she wishes toenter a new credit card or change the data of a stored credit card, theprocessing of block 192 is performed. This block represents the processof receiving user input naming the credit card, giving the name shown onthe face of the card, the card number and the expiration date. In someembodiments, the credit card information can be entered by "swiping" thecredit card through a commercially available credit card reader 45 inFIG. 3 which reads the magnetic strip on the card and sends the data tothe microprocessor 40. The details of these commercially availablemagnetic stripe readers are hereby incorporated by reference. After thecredit card data is entered, the user is prompted for any changes to thecard data just entered or any other card previously stored as symbolizedby block 194. If the answer is no, processing returns to block 190.However, if the answer is yes, the processing of block 196 is performedto allow the user to select the card to be changed and receive thechanges to the card data. Thereafter, processing returns to block 190.

If the user answers the query of block 190 that he or she wishes to paythe bill for the shopping which has been completed with a credit card,processing is vectored to block 198. There the user is queried whetherhe or she wishes to download credit card data to the store computer asrepresented by block 198. If the answer is no, processing returns toblock 190. If the answer is yes, processing is vectored to block 200which represents the process of displaying the list of stored creditcards to the user and receiving the user's selection as to which card isto be used. Thereafter, the card data is downloaded to the storecomputer, as symbolized by block 202.

FIG. 12 represents the flow chart for match processing for comparing theASCII string of a scanned item to the active shopping list and activeprice list. The problem solved by the processing of FIG. 12 is thatshoppers may not use the same prose to describe the desired item to beadded to a shopping list as exists in the store computer to describe thesame item. For example, the user may enter only "peanut butter" on hisor her shopping list whereas the store computer may have entered thereinthree entries for "Skippy brand, chunky style peanut butter", Skippybrand, creamy style peanut butter" and "Jiffy brand, chunk style peanutbutter". Since there is not a complete overlap between what is scannedand what is on the shopping list, the Personal Scanner™ device softwaremust use "fuzzy logic" to determine which item on the shopping listcorresponds to the item scanned. In FIG. 12, this fuzzy logic isimplemented by blocks 210, 212 and 214. The processing of FIG. 12 is analternative process to that symbolized by block 92 in FIG. 5. The barcodes on products do not encode the entire description of the product.They only encode a product identifier which is mapped in the storecomputer to an ASCII string which describes the product in the mannerseen by the user on his or her receipt. When the user downloads theprice list, the ASCII string for each item available in the store isdownloaded with its price and its bar code ID. Block 210 represents theprocess of mapping the bar code ID received from the scanner to theASCII string describing the product downloaded from the store computerwith the price list and comparing the words in the ASCII stringdescribing the item scanned to the words describing the items on thecurrently selected shopping list. If there is a match between any wordor words on the ASCII string to any word describing any item on theshopping list, the items from the shopping list having at least onematching word are marked for later display as symbolized by block 212.Block 214 represents the process of displaying all the items from thecurrent shopping list having at least one matching word as a list of allpossible matches, and prompting the user to select which item is theitem just placed in the basket. Block 216 represents the process ofreceiving the user selection usually by sensing which item on the listof possible matches has been touched on the touch screen. Thereafter,processing is vectored to block 94 on FIG. 5. If no match was found instep 212, the processing of block 218 is performed to display a "notfound" message. Thereafter processing is vectored to block 96 in FIG. 5.

FIG. 13 shows a plan view of an embodiment of the device using atouchscreen instead of the light pen 10 shown in FIG. 1. All otherfunctionality is the same as for the embodiments described herein.

FIG. 14 is an end view of the embodiment shown in FIG. 13.

Referring to FIG. 15, there is shown a perspective view of a shoppingcart mounted version of the Personal Scanner™ device. This embodiment isuseful for users who do not own their own Personal Scanner™ devices. Theembodiments shown in FIG. 15 uses a touchscreen for user input, but anyother pointing device or other method of receiving user input would alsosuffice to practice the invention. The scanning window is shown at 250and two D.C. electromagnets for deactivating security strips are shownat 254 and 252. A slot 256 for inserting a credit card into anintegrated credit card reader 45 is shown although this is an optionalfeature and can be deleted in some embodiments. A scan button 258 ispushed by the user when an item has been placed in front of the scanningwindow for scanning. OUT and IN buttons 260 and 262 are used by the userto download scanned data to the store computer and to download the storeprice list and coupon list, respectively.

Referring to FIG. 16, there is shown a perspective view of analternative embodiment of a PID handheld computing device. The unit iscapable of barcode scanning and has a PCMCIA card slot 300 compatiblewith PCMCIA Type I, II or III PC Cards (not shown). The PCMCIA slot alsohas built-in magnetic heads (not visible in FIG. 16) to read magneticstripe cards and contacts (not visible in FIG. 16)to make contact withSmart Cards with physical contacts. The unit also has RF taginterrogation capabilities through a loop antenna embedded in theplastic of case 302. In alternative embodiments, the RF taginterrogation antenna could be an external antenna.

Antenna 304 is coupled to an RF module (not shown) which is used todownload data to a host computer coupled to a local area network with anRF link or RF receiver with a digital interface to the host computer.The downloaded data can be scanned data from barcodes or data read frommagnetic stripe cards, PC Cards or smart cards inserted into the PCMCIAslot. The antenna 304 can also be used to upload data from a local areanetwork or RF transmitter coupled to a host computer.

The PID unit also includes a front panel button 255 which servesmultiple purposes. One purpose is to wake the unit up from sleep orstandby mode when the unit has been powered down. Another purpose is totrigger barcode scanning action or RF ID scanning action. Typically, thebutton 255 is connected to a switch which controls the logic state of aninternal interrupt signal line to the microcomputer 320 in FIG. 19.

The PID unit 298 also includes a window 306 through which the PID unitreceives light reflected from a barcode. In the preferred embodiment,the PID unit has a CCD barcode scan engine located behind the window306. Such scan engines are available commercially from Scanquest in SanDiego, Calif. In alternative embodiments, the barcode scan engine canalso be a laser based barcode scanning engine available from SymbolTechnologies of Bohemia, N.Y., PSC of Bohemia, N.Y. or TPS Electronicsof Palo Alto, Calif. The details of these barcode scan engines of laser,CCD or other type barcode scan engines are hereby incorporated byreference. The scan engines include special purposed barcode decoderchips or programmed microprocessors that convert the spatial patterns ofthe barcode into alphanumeric characters from any common code set suchas ASCII, EBCDIC etc.

In the preferred embodiment,the PID unit has a signature capturingdisplay 308. This display consists of an LCD or other type underlyingdisplay to provide backlighting for a signature capture overlay. Theoverlay is a pair of conductive films in parallel which are energized attheir corners. When a user writes a signature on the display, thepressure of the pen causes the two overlay films to short together atvarious points. The overlay films are divided into 1024×1024 pixelarrays and have built in resistive properties. The various points wherethe films contact each other form resistive voltage dividers such thatthe x and y coordinates of each touch can be determined by analog todigital converters coupled to the films which read the unique voltagesgenerated by the voltage dividers created by each touch. The overlayscreen is available commercially from Touch Tech. of xxxxx, California.The digital data generated by the analog to digital converters is readby an interface circuit that includes a programmed microprocessor whichconverts each touch into a packet of five bytes of data which are thenstored. As a signature is written, numerous sequential touches occur,each of which generates a five byte packet such that a unique stream ofdata is generated. This stream of data can be stored or downloaded viathe RF link to a host computer. Since PC Cards are available to provideadditional nonvolatile memory or even hard disk storage, the signaturecapture data and scanned barcode data can be stored locally within PID298 for later downloading to a host computer via the RF link. Thedetails of the overlay screen and the interface thereto are herebyincorporated by reference.

The PID unit also includes a built in printer 310 of which only theoutput slot is visible in FIG. 16. This printer is typically of thethermal printer variety such as are used in many of the handheldcalculators or cradles therefor such as the print cradle for the TI 59scientific calculator. In the preferred embodiment, the printer moduleis available commercially from Seiko-Epson in Japan as model numberMTP201-G128B. This type printer draws very little current except whenthe paper is moved at which time it draws about 2-3 amps. The details ofthis printer are hereby incorporated by reference.

The PID unit 298 include rechargeable batteries (not shown) which may benickel-cadmium, nickel-metal hydride, sealed lead acid, lithium-ion orpossibly other battery technologies developed in the future. Typically,the battery pack will be detachable so that a new battery pack can beattached when the battery pack in use is discharged.

FIG. 17 shows a charging stand/desktop unit (hereafter base unit) foruse with the PID unit of FIG. 16. The base unit 312 comprises supportunit 315 to which is mounted a rotatable charging mount 316. Thecharging mount 316 can rotate downward to a flat position as will bebest understood by reference to FIG. 18. FIG. 18 shows the PID unitmounted for desktop operation in the base unit. The charging unit 316 isconfigured such that the removable battery pack does not have to beremoved when the PID unit is placed in the charging unit. Electricalcontacts on the removable battery unit mate with matching electricalcontacts on the charging unit to charge the battery.

The charging unit can be rotated using knob 318 to a horizontalorientation such that the barcode scanning window 306 is oriented toread barcodes which are passed by the window within about 20 inchesthereof.

The base unit includes its own RF module and RF antenna (not shown)which are used to download data to a host computer or upload data fromthe host. The base unit can also include a hardwired interface card to alocal area network.

Data transfer between the PID unit and the base unit can be by a set ofelectrical contacts defining mating connectors of a bus, but, in thepreferred embodiment, data is transferred between the PID unit and thebase unit by way of infrared beams. The PID unit has an infrared windowin the back surface (not visible in FIG. 16) behind which is an infraredtransceiver module connected to a microprocessor within the PID. Aninfrared window in the charging unit 316 has an infrared transceivermounted behind it and is located so as to be in line of sight of theinfrared window in the PID unit so as to be able to bidirectionallycommunicate using infrared beams.

FIG. 19 is a block diagram of the circuitry of an alternative embodimentthat is housed in the enclosure detailed in FIG. 16. This embodimentutilizes a V35 microcomputer 320 which communicates with and coordinatesa plurality of peripherals. Power is provided by a rechargeable batterypack 319 comprised of nickel cadmium or nickel metal hydride batteries.A power switch 209 selectively connects the batteries to a set of powerconverters 211 which convert the single DC battery voltage to +5 volts,an adjustable -15 volts to -24 volts and a voltage suitable forbacklighting the touchscreen display.

The microcomputer 320 can be awakened from sleep state by an interruptsignal on line 253 which is normally held at logic 1 by Vcc appliedthereto through pullup resistor 251. Switch 255, which is typically of amomentary contact type, grounds line 253 dragging it to a logic 0 statewhen the microcomputer is to be awakened.

Barcodes are scanned by a CCD barcode scan engine 322 which iscommercially available from Scanquest in San Diego, Calif. The preferredbarcode scan engine uses a row of LED's which line a border of the scanengine window. A user places the barcode to be scanned in front of thescan engine window within 20 inches thereof and give a scan signal. Thescan signal can be entered by touching a particular portion of thetouchscreen, pressing a switch on the PID unit etc. When the scan signalis given, the LED's are sequentially energized to illuminate the barcodein a pseudoscan. The reflected light is imaged by a two dimensional CCDarray and the resulting image is processed by image processing circuitryin the scan engine. The particular scan engine selected has imageprocessing circuitry which is capable of decoding either one dimensionalbarcodes or the new two-dimensional barcodes developed by UPS andoutputting alphanumeric characters. In alternative embodiments, anybarcode scan engine of laser, CCD or other varieties which are eitherdecoded or undecoded and which can scan one dimensional barcodes may beused. In undecoded scan engine embodiments, a commercially availablebarcode decoder chip such as the HP2310 series available from HewlettPackard of Palo Alto, Calif. is coupled to receive the output signal ofthe barcode scan engine. The decoder chip then decodes the output signalfrom the scan engine and outputs the ASCII characters encoded in thebarcode to the microcomputer 320 via data path 326. If a barcode scanengine which is undecoded is used, microprocessor 320 executes knownbarcode decoding algorithms such as those used in Telxon or SymbolTechnologies portable barcode readers to generate a plurality ofalphanumeric characters. These characters are stored in system memory324. In the case of barcode scan engines that do the decoding and outputalphanumeric characters, microprocessor 320 retrieves the decodedcharacters via bidirectional bus 326 and stores them in system memory324 for later downloading to a host computer via the RF link to the hostor for local use by some application in execution on the PID unit.

The microcomputer 320 communicates with the user through a liquidcrystal display 328 which is overlayed with a touchscreen 308. Theliquid crystal display is any conventional LCD such as are used on anylaptop computer except scaled to a suitable size. Preferably, an LCDdisplay model G321EX5B00X, commercially available from Seiko Instrumentssales division located in Torrance, Calif. is used. Characters andgraphics to be displayed are communicated to the LCD display 328 via bus329. Two different types of touchscreens designated 308A and 308B areshown in FIG. 19 to signify alternative embodiments. Touchscreen 308A isa keyboard type which is available commercially from Seiko Instrumentlocated in Torrance, Calif. A keyboard type touchscreen has twoinsulating films with two dimensional array of locations having matchingconductive regions formed on each film such that when the user touchesany particular array location, the two conductive regions on theinsulating films touch thereby closing a switch. The conductive regionsare coupled to edges of the array by a plurality of conductive tracesacross the surface of the film. The array of switches thus forms a"keyboard" where characters and punctuation can be "typed" by touchingvarious areas on the screen with a finger, pencil etc.

Touchscreen 308B is the signature capture type touchscreen which iscommercially available from Inforite Corporation of San Mateo, Calif.This type touchscreen has its own microprocessor and scanning circuitryand has a much higher resolution, typically 1024×1024. This type oftouchscreen starts a continuous scanning of its grid of switches whensignature capture mode is turned on so that the pattern of switchclosures that occurs when a user writes a cursive signature on thetouchscreen can be recorded. An analog-to-digital converter reads analogvoltages caused by successive switch closures and generates multiple 5byte packets. These packets of data from signature capture are sent tomicrocomputer 320 via bus 309B. If touchscreen 308A is used, keyboardcodes from touchscreen 308A are sent to the microcomputer via bus 309A.

The microcomputer 320 is also coupled to a PCMCIA interface 297 ofconventional design. This interface is coupled to the PCMCIA buscontacts 779 in FIG. 43 and reads and writes PCMCIA cards. Many handheldcomputers today have PCMCIA slots and PCMCIA interface hardware andsoftware to implement a PCMCIA interface in accordance with thespecifications of the PCMCIA Industry Association standards group,including but not limited to the PC card Standard Release 2.01, SocketServices Specification Release 2.0, Card Services Specification Release2.0, ATA Specification Release 1.01, AIMS Specification Release 1.0 andthe Recommended Extensions Release 1.0, all of which are incorporated byreference herein. Numerous types of PCMCIA cards exist such as modems,external memories, hard disk drives, LAN interfaces, RF transceiver etc,and a list of them and the identies and locations of their manufacturersis published by the PCMCIA Industry Association. The list and thedetails of all the commercially available PCMCIA cards is herebyincorporated by reference.

The microcomputer 320 can also create permanent records of transactions,generate receipt, print coupons etc. through use of the thermal printer310 discussed previously. Data to be printed and control commands aresent to the printer via bus 311.

The microcomputer 320 communicates with other host computers via an RFlink implemented by spread spectrum radio transceiver 307. Thistransceiver receives characters to be transmitted from microcomputer 320via bus 313, the characters having been retrieved from system memory324. The RF transceiver is available commercially from Proxim, Inc.located in Mountain View, Calif. as model number xxx. The RF transceiveracts like a modem in modulating digital data onto and RF carrier asaudio tones. An alternative RF transceiver would provide voicecommunication. Such a transceiver is available commercially fromWireless Logic, Inc. of San Jose, Calif. as their "900 MHz SPREADSPECTRUM RF TRANSCEIVER MODULE" and utilizes WLT9009 speed spectrumsignal processor integrated circuit to send either digital data or voiceor both to a receiving station. In such an embodiment, the PID wouldtypically have either a built in microphone and speaker or a headsetjack for use with a headset/microphone arrangement like pilots use fortwo way voice communication with an operator at a receiving station.Typical applications would be use on a factory floor taking inventory ofparts located in various places in the factory by scanning barcodes orRF ID tags with voice notes to a second operator located remotelyindicating where in the factory various parts are located.

A block diagram of the Wireless Logic spread spectrum transceiver isshown in FIG. 25. In alternative embodiments, a digital data only, orboth digital and voice non-spread spectrum RF transceiver may besubstituted for the digital and voice data spread spectrum RFtransceiver disclosed in FIG. 25. The preferred transceiver of FIG. 25uses a 3 pole bandpass filter 381 coupled to antenna 304 (elements havethe same reference numbers used in previous figures generally have thesame function and structure unless a duplication of a reference numberhas inadvertently occurred). A transmit/receive switch 383 couples thebanpass filter and antenna either to the receive path 385 or the output387 of the power amplifier output stage of the transmitter. A crystal389 controls the frequency of a local oscillator 391 which drives abuffer 393 which provides a step up frequency of about 83 MHz for use byan up-converter mixer stage 395. The other signal to the up converter onpath 397 changes in frequency around a base frequency of 830 MHz inaccordance with the spread spectrum diversity scheme thereby causing theoutput frequency on path 399 to hop from one frequency to another at theinput of the power amplifier 387. The frequency diversity scheme isimplemented by a frequency synthesizer/phase lock loop which generates afrequency in accordance with digital SDATA on bus 403. Modulation ofthis output frequency from the frequency synthesizer is provided by avoltage controlled oscillator 405 which changes its frequency inaccordance with a modulation signal on path 407. The output of the VCOon path 415 is input to a mixer 417 which mixes the signal with atransmit/receive polynomial signal on path 415. The transmit/receivepolynomial signal on path 415 is a sequence of frequencies or digitaldata that controls frequency generation in the mixer for mixing with thesignal on path 415 to implement the spread spectrum frequency hopping.The signal on path 415 is generated by the WLT9009 spread spectrumsignal processor under control of a microprocessor (both not shown). Inthis case, the microprocessor is the host microcomputer 320 in FIG. 19.

Control of the position of the transmit/receive switch is provided by asignal on path, and transmit power control is provided by a signal onpath 411 and a driver 413 which is coupled to the mixer 417, a buffer419 and mixer 395. Buffer 419 serves to supply an output signal of themixer 417 to a de-spread/down converter 421 in the receiver path whichreceives amplified signals from the antenna from an amplifier 423. Theoutput of the down converter 421 is filtered in a 4-pole bandpass filter425 which feeds a second down converter 427. The down converter 427mixes the filtered signal with a sample of the signal generated b thelocal oscillator 391 on path 429. The output of the second downconverter 427 is filtered by a 2-pole bandpass filter 431 and amplifiedby an IF amplifier for demodulation by demodulator into audio signals.

As an alternative to reading barcodes, the PID unit may also gatherinformation from items to be scanned by use of radio frequencyidentification tags or transponders on items to be "scanned" and an RFID tag reader/writer 314. FIG. 20 shows a block diagram of a typical RFID tag or transponder circuit. Such RF ID tag systems are commerciallyavailable from Disys Inc. in Toronto, Canada as their 90 Series RF IDtags and from Hughes ID Corporation in Mission Viejo, Calif. Dysispublishes a "90 Series RF/ID System Applications Manual for CRM-90Readers and 90 Series Tags, the details of which are hereby incorporatedby reference. RF ID tag reader/writer circuits suitable for use asinterface 314 in FIG. 19 are also commercially available from these twosources. RF ID tags are also currently commercially available from AtmelCorporation of Colorado Springs, Colo. and Eurosil, a Division ofDaimler Benz located in Munich. Reader/writer systems are also availablefrom Indala, a division of Motorola located in San Jose, and as twointegrated circuit sets (one transceiver and one digital section) arecommercially available from another division of Daimler Benz called AEGTelefunken. The details of these commercially available RF ID tags andRF ID tag readers are hereby incorporated by reference. A block diagramof a typical circuit that may be used for the RF ID tag reader 314 isshown in FIG. 44.

Today, low frequency RF ID tags operate at a frequency which is suchthat the size of the coil of wire needed for an antenna is too large tobe integrated on an integrated circuit. Higher frequency tags currentlyunder development will have antennas which are small enough to allow theentire RF ID tag to be integrated on a single integrated circuit die.Further, current RF ID tags can only be read by readers which have beenconfigured to be compatible with the tag such that the readerunderstands the tags instruction set, data format and command syntax.

An RF ID tag is a small circuit which includes a radio transceiver 315which is powered by power derived from rectification of incoming RFsignals, the process of deriving suitable power from the incoming RFbeing performed by power supply section 321. The RF ID tag also hason-board nonvolatile memory 317 for storing data such as an identifiercode which identifies the type of goods that the tag is attached to anda serial number identifying the particular tag. The memory isnonvolatile and may be both written and read by RF communication to thechip in the preferred embodiment, but in alternative embodiments, thememory may be fixed and unalterable such as ROM or even hardwiredconnections. Typically, the nonvolatile memory is of the ROM, EEPROM oranti-fuse variety. Several U.S. patents naming inventor Bruce Rosenerand assigned to Unisys Corporation and Instant Circuit exist describingthe structure of nonvolatile antifuze memory in an RF ID tag with noindependent power source. These patents are U.S. Pat. Nos. 4,442,5075,296,722 5,407,851, 4,796,074 and 5,095,362. The details of thesepatents are hereby incorporated by reference.

The RF ID tag also includes digital control circuitry which controlsswitching of the antenna connection, whether the tag is sending orreceiving, and reading and writing the memory section. Typicalinstruction sets for the more sophisticated RF ID tags currentlyavailable include commands to Read Word n, Write Word n, Read Delayedand Turn Off such that the RF ID tag does not respond to interrogations.

The function of the RF ID tag is to receive an excitation signal fromthe reader 314, modify it in some way which is indicative of dataidentifying the particular tag that did the modification therebyidentifying the particular item to which the tag is attached, thentransmitted back to the reader. In the absence of stimulus from thereader, the tag is dormant and will not transmit data of its ownvolition.

Typically, the low frequency RF ID tags are very small and are affixedto a substrate upon which a coiled conductive trace serving as anantenna is formed by integrated circuit or printed circuit technology.The digital control circuitry also keeps the tag "locked" so that itcannot alter data in the memory or read and transmit data from thememory until the digital circuitry detects reception of the unlocksequence. The RF ID reader/writer unit 314 knows the unlock sequence forthe RF ID tags to be unlocked for interrogation or writing data thereto,and transmits that sequence plus interrogation or other commands to theRF ID tags via a separate RF antenna embedded in the casing of the PID.The RF ID reader/writer unit 314 sends any received characters returnedin response to the interrogation to the microcomputer 320 for storage insystem memory 324 and possible later downloading to a host computer thatmay be doing, for example, invoice printing, inventory control etc.

The RF ID reader/writer 314 has the same architecture as the RF ID tagexcept that it includes an interface circuit to the microcomputer 320and a power supply circuit. The interface circuit can be as simple as astraightforward bus interface or it could be an infrared link, a localarea network link, and RF link or a PCMCIA interface.

Data communication between the PID unit's microcomputer 320 and thecharging unit 312 is through an infrared transceiver located in the PIDunit symbolized by block 440 and a matching transceiver located in thecharging unit. The preferred configuration of this arrangement can bebest seen in FIG. 21 which is a frontal "see through" view of the PIDunit mounted in the charging unit. The infrared transceiver 440 is seenas a rectangular module in the lower part of the PID unit which overlapa similar rectangular module in the charging stand. The base unit hasits own RF transceiver module 312A mounted on a printed circuit board inthe charging unit 316 and driving antenna 442. Printed circuit board 444mounted in the bottom of base unit 312 is a charging unit controller tomonitor the charge state of the rechargeable battery in the PID unit andto prevent overcharging.

The base unit can turn the PID into a hard wired terminal for a hostcomputer as can best be seen from FIG. 22 which is a side view of thebase unit showing a parallel port 446, a serial port 448 and a keyboardport 450. The parallel and serial ports can be used to output data fromthe PID to the host computer or to input data from the host to the PID.Keyboard port 450 allows a standalone keyboard to be attached to thebase unit for converting the combined unit into a point of sale typeterminal where some information is scanned into the system by barcodescanning or RF ID tag interrogation and other data is entered by thekeyboard. The portion of the base unit which docks with the PID can alsopivot to change the angle of viewing of the touchscreen of the PID. Knob318, when turned, changes the angle of view.

FIG. 23 is another side view of the PID unit as mounted in the base unit312.

Returning to the consideration of FIG. 19, the infrared transceiver 440is preferably a HSDL-1000 infrared module available commercially fromHewlett-Packard of Santa Clara, Calif., the details of which areincorporated by reference. In alternative embodiments, other infraredtransceiver could also be used. The Hewlett-Packard infrared transceiverhave a 1 cm to 1 meter operating range with a 30° viewing angle and a2.4 KBd to 115.2 KBd data rate and has low power consumption and isInfrared Data Association compatible. The transceiver uses a high speed,high efficiency TS AlGaAs 875 nm LED, a PIN silicon photodiode and anintegrated circuit to drive the LED and read data from the photodiode.The integrated circuit also includes amplifiers and a quantizer. Themodule interfaces with selected I/O chips which incorporate logic whichperforms pulsewidth modulation/demodulation.

FIG. 24 is a schematic diagram of the HP infrared transceiver such asmight be used for block 440 in FIG. 19. Transmit data enters on line 450and is buffered by amplifier/driver 452. The output of driver 452 isactive low and is connected to the cathode of the LED 454. The anode ofthe LED is coupled to the positive voltage supply through a currentlimiting resistor. When the driver output line 455 is driven low, thedriver sinks current through the LED and a pulse width modulated lightpulse is emitted.

The PIN photodiode 456 receives incoming light pulses and converts themto electrical pulses which are amplified by amplifier 458. The output ofamplifier 458 is compared to a reference level by comparator 460 whichhas its output coupled to the receive data line 462.

Referring to FIG. 26, comprised of FIGS. 26A-26P, there is shown a flowchart of the processing of the operating system program that coordinatesactivities by the microcomputer in controlling and communicating theother elements of the portable information gathering device. Theprocessing of FIG. 26A is generally devoted to power on initializationand diagnostics. Specifically, the processing of block 1202 performssystem initialization, and block 1204 performs system diagnostics andtests. The test of block 1206 determines if any errors were detectedduring the diagnostics. If not, processing enters the main loop processsymbolized by FIGS. 26B(1) and 26B(2). If erros were detected during thediagnostics, block 1208 generates some sort of visual or audibleindication that a boot error occurred, and test 1210 determines if itwas a fatal error which would prevent accurate processing. If not,processing enters the main loop. If it was a fatal error, block 1212tries to reset the processor, and block 1214 returns processing to theprocess of block 1204.

Referring to FIG. 26B, there is shown a flow chart of the main loopprogram. Test 1218 determines of there has been any touch of thetouchscreen. If there has, processing is vectored to a touch handlersubroutine symbolized by block 1220. Processing of the touch handler isshown in FIG. 26C. The first step in handling a touch of the touchscreenis to determine the x and y coordinates of the touch, as symbolized byblock 1222. This is done by sequentially driving each row of opencollector drivers on the touchscreen with a logic low signal. Thecolumns have Vcc supplies and pull up resistors, and any touch willconnect one pullup resistor and Vcc supply to one of the rows. Thebottoms of the column lines are coupled to a buffer which is coupled tothe data bus of the microcomputer. The buffer is sequentially read bythe microcomputer as each row is driven low. The series of data vectorsread from the buffer define the x and y coordinates of the touch. Block1224 represents a process for testing for invalid touches that result insuch errors as "ghost key" conditions. If such an error has occurred,block 1226 is performed to indicate an invalid touch such as bydisplaying a message to that effect or sounding a beep etc, assymbolized by block 1226 and then exiting to the main loop.

Block 1228 represents the process of mapping the x and y coordinates ofthe touch to the action desired by the user. To do this, themicrocomputer looks up a table or database relating the icons or choicesavailable for a particular display. Each display such as a menu, adisplay of a keyboard so that a user can type in alphanumericinformation etc., will have its own table or database. The entries inthis database will consist of one record for each icon or choicedisplayed on the associated display. Each record will comprise fourfields: the x,y coordinates of the origin of a box on the display wherethe icon or choice is displayed; width and height parameters definingthe size of the box in terms of the number of switch positions on thetouchscreen that are encompassed by the box; an address of a routinethat carries out the processing represented by the icon; and an addressof the icon's graphics in system memory so that the icon can beredisplayed if necessary after some processing. Test 1230 represents theprocess of using the x,y coordinates of the touch to search the databasefor a matching icon. If no match is found, the process of block 1232 isperformed to indicate no icon/action match has been found for the touchsuch as by a distinctive beep etc. and then exit to the main loop. Iftest 1230 found a match for the x,y coordinates of the touch, block 1234is performed to initialize a jump parameter by writing the address forthe handler routine for the matching icon in an address in memory thatwill be used as vector to the handler routine when a jump indirectinstruction is executed as symbolized by block 1236.

Returning to the consideration of FIG. 26B, if no touch of thetouchscreen was found in test 1218, test 1240 is performed to determineif any power management requests have occurred. Generally, because theportable information gathering device is battery operated, a timer willbe used to timeout and shut the unit down or shut down power hungrycircuits after a predetermined period of inactivity. If a powermanagement request has occurred, processing is vectored to the powermanagement handler routine, as symbolized by block 1242.

FIG. 26D is a flow chart of the power management handler. Test 1244determines if there has been inactivity for more than a predeterminedamount of time. If there has been inactivity for a predetermined time,block 1246 is performed to perform automatic power down of the portableinformation gathering device. The PID then goes into a standby modewhere only essential circuits are powered up (only those circuits neededto wake the unit back up), as symbolized by block 1248. If there has notbeen inactivity for a predetermined time, a test 1250 is performed todetermine if the battery is almost out of charge. If so, block 1252 isperformed to indicate to the user that the battery is almost out ofcharge such as by flashing a graphic, beeping, displaying text messageetc. Next, test 1256 is performed to determine if an RF link isavailable to the host computer. If not, path 1258 is taken to exit tothe main loop. If an RF link is available, block 1260 is performed tosend a "low battery" message to the host computer and then exit back tothe main loop.

If test 1250 determines that the unit is not almost out of charge, block1254 is performed to collect usage information such counting the amountof time in all inactive periods, counting the time the unit has beenturned on, and updating variables related to useage. Then path 1255 istaken to exit back to the main loop.

Returning to FIG. 26B, if test 1240 determines that no power managementrequests have been made, test 1262 is performed to determine if anytimer requests have been made. For some applications of the personalinformation gathering device such as UPS route work etc, time and datestamps on such things as electronic signatures captured from persons towhom deliveries have been made are useful. The microcomputer in FIG. 19either includes its own clock/calendar/timer function to provide thisdata or it is provided by another peripheral chip (not shown). If atimer request has been made, processing is vectored to the timerhandler, as symbolized by block 1264. The timer handler routine issymbolized by FIG. 26E. Block 1266 represents the process of reading thetimer or time of day/date chip when a timer interrupt or other timerrequest occurs. After the timer count or time of day/date information isread from the timer, time and date variables in memory are updated foruse in time and date stamping signature capture files etc. (in someembodiments, when a signature capture file is to be time/date stamped, aspecial access routine to the time of day/date circuit can be made toread the time and date). Next, block 1268 is performed in embodimentswithout time/date chips to calculate the time from the count obtainedfrom the timer. Next, block 1270 is performed to check activity statusand update activity variables. For example, a flag might be set everytime a touch on the touchscreen occurs. Block 1270 represents theprocess of checking this flag each time a timer interrupt occurs to seeif a touch has occurred and updating an activity variable such as acount of the number of interrupt intervals for which there has been notouch for purposes of deciding whether to go into automatic powerdownmode.

Returning to FIG. 26B, if test 1262 determines that no timer requestshave been made, test 1272 is performed to determine if any RF requestshave been received from the RF transceiver 307 in FIG. 19. If so,processing is vectored to the RF handler symbolized by block 1274 andFIG. 26F. Test 1276 determines if the RF transceiver module is on. Ifnot, block 1278 applies power to the RF module. If the RF module is on,test 1280 is performed to determine if any data has been received fromthe host computer. If so, block 1282 is performed to read the data andstore it in a buffer memory in the PID for later use. Then theprocessing of block 1283 is performed to set a flag indicating that datahas been received from the host computer, and then processing returns totest 1280 to test for whether more data needs to be transmitted from thehost computer. If no data has been received from the host computer, test1284 is performed to determine if any data needs to be transmitted tothe host computer. If not, the routine of block 1285 is performed topower down the RF spread spectrum transceiver module and then theroutine exits back to the main loop. If there is data to be transferredto a host computer elsewhere, block 1286 is performed to transmit thedata to the host computer via the RF transceiver 307, and then theroutine exits.

Returning to FIG. 26B, if test 1272 finds no RF requests, test 1284 isperformed to determine if any infrared communication requests from theIR transceiver 440 in FIG. 19 are pending. If so, processing is vectoredto the infrared handler routine as symbolized by block 1286 and FIG.26G. Referring to FIG. 26G, block represents the process of sending outinquiry data to the infrared controller 440 in FIG. 19 to ascertainwhether the portable information gathering device is docked with a baseunit or docking host computer. Test 1290 determines of there was anyreply to the inquiry transmission. If not, the routine concludes thatthe PID is not docked, and the routine exits back to the main loop, assymbolized by block 1292. If a reply is received, the base unit ordocking host is on line and the process of block 1294 is performed toestablish synchronization. Next, test 1296 determines if there is anydata to send. If so, block 1298 is performed to transmit the data fromthe memory or microcomputer to the infrared controller. Then block 1300is performed to clear the receive data flags to indicate that data isbeing transmitted. Then the routine exits. If test 1296 determines thatthere is no data to be sent, test 1302 is performed to determine if anydata from the docking host or base unit has been received. If not, theroutine exits. If so, test 1304 is performed to determine if the datareceived from the docking host or base unit is a command or data. If itis data, block 1306 is performed to buffer the data from the dockinghost or base unit in system memory, and then the routine exits to themain loop. If test 1304 determines that the received data is a command,block 1308 is performed to interpret the command from the docking hostor base unit (docking host refers to a host computer or satellitecomputer other than the base unit 312 with which the PID can dock fordirect transfer of data by infrared transmissions). After the commandhas been interpreted in block 1308, block 1310 is performed to call acommand handler routine which is appropriate to the command received.

Returning to the consideration of FIG. 26A, if test 1284 determinesthere are not infrared requests, test 1312 is performed to determine ifthere are any outstanding printer requests. Typically, the tests in themain loop of FIG. 26A represent either interrupts from the variousperipherals, timed interrupts to handle each peripheral in its own timeslice or sequential polling of the peripherals. If test 1312 determinesthat it is time to perform the printer service routine, processing isvectored to a printer handler, as symbolized by block 1314 and FIG. 26H.Test 1316 determines if there is any data to print. If not, block 1318is performed to power down the printer and the routine exits back to themain loop. If there is data to print, block 1320 is performed to sendthe next data value to the printer controller for printing. Then block1322 is performed to update variable for printer buffer management, andthe routine exits to the main loop.

Returning to the consideration of FIG. 26B, if test 1312 determines thatthere is no outstanding request for printer service, test 1324 isperformed to determine if there are any outstanding requests for serviceto the barcode scan engine. If there are, processing is vectored to thebar code handler routine symbolized by FIG. 261 and block 1326. Thefirst step in this process is to initialize the bar code scan engine, assymbolized by block 1328. Typically, this will involve powering up thebarcode scan engine, or setting the illumination intensity for the rangeof scanning desired. Next, the test of block 1330 is performed todetermine if any command needs to be sent to the bar code scan engine.Typically, such commands include commands received from the user by, forexample, touching a specific area on the touchscreen, to scan a barcode,change barcode symbology types etc. If test 1330 determines that acommand is to be sent, typically by checking a flag that gets set when acommand is issued by the user, block 1332 checks the command queue forcommand type to determine what type command is to be sent. Then test1334 is performed to determine if the command was a scan request. Ifnot, path 1336 is taken to block 1338 to process whatever other type ofcommand is to be sent as needed and send it to the barcode scan engine.If the command was a scan request, path 1340 is taken to block 1342where processing to prepare for barcode scanning is performed. Thisprocessing typically entails clearing a temporary buffer or storage areato make room for the decoded data to be received from the barcode scanengine. Next, test 1344 is performed to determine if the read was or wasnot good. If not, block 1346 is performed to generate some visible oraudible indication of a bad read. If the read was good, i.e., asuccessful decoding operation was performed, the processing of block1348 is performed to make some visible or audible indication of a goodread. Then block 1350 is performed to transfer the decoded alphanumericinformation decoded from the barcode scan engine into the system memory.

Returning to test 1330, if no command is to be sent to the barcode scanengine, test 1352 is performed to determine if there is any decodedalphanumeric data to transfer to the PID system memory from barcode scanengine. Typically this occurs when a successful decode occurs while themicrocomputer is busy processing handler routines for other peripheralunits. If there is no such data, the routine exits back to the mainloop. If there is decoded data waiting in the barcode scan engine, block1354 is performed to read the decoded alphanumeric barcode data from thebarcode scan engine. Then, the process of block 1356 is performed tobuffer the data into the PID memory.

Returning to the consideration of FIG. 26B, if the test of block 1324determines that no processing of the barcode scan engine is required,the test of block 1358 is performed to determine if the user hasrequested a signature capture mode. If so, processing is vectored to theprocess symbolized by block 1360 and FIG. 26J. The first step in thisprocess is symbolized by block 1362 where the signature capturecircuitry 308B in FIG. 19 is prepared for operation. This preparationfor signature capture involves powering up the circuitry andinitializing tables in PID memory to prepare to receive the packets ofdata and initializing variable such as good read and bad read flags etc.Next, test 1364 determines if there is any data from the signaturecapture circuitry that needs to be transferred. Typically, the signaturecapture circuitry sets a flag when it has data ready for transfer, andtest 1364 checks this flag. If there is data waiting, block 1366 isperformed to read the data packets from the signature capture circuitry308B and save them in the PiD memory. Next, block 1368 is performed toperform the necessary resolution transformation to translate thesignature capture data at 1024×1024 resolution to 320×240 resolution ofthe LCD display, or, in alternative embodiments, whatever resolution ispresent in the graphics printer on board the PID. Next, block 1370 isperformed to display the signature data received so far on the LCDdisplay of the PID. Then, path 1372 is taken back to the test 1364 toget the next data packet. The process repeats continuously like this asthe various switches on the touchscreen close and new packets of dataare generated. If the test 1364 determines that there is no more datapresent in the signature capture circuitry 308B to deliver, test 1374 isperformed to determine if the signature capture circuitry is donecapturing data. If not, processing returns to test 1364. If signaturecapture is done, block 1376 is performed to shut down the signaturecapture engine. Then block 1378 is performed to perform compression onthe signature capture data for storage.

Returning to consideration of FIG. 26B, if test 1358 determines that nosignature capture processing request is pending, test 1380 on FIG. 26Bis performed to determine if there are any requests to read magneticcards such as when a user selects credit card for payment for an order.If such a request exists, the processing of FIG. 26K is performed assymbolized by block 1382. The first step of this process is symbolizedby test 1384 to determine if a magnetic stripe card is present in thePCMCIA slot (or other credit card slot in other embodiments). This isdetermined by reading a card present signal generated by a sensor in thecard slot. If a card is present, block 1386 is performed to startlooking for dock/data from the magnetic card interface 512 in FIG. 19.Next, block 1388 is performed to save the magnetic card data in the PIDbuffer memory, and then test 1390 is performed to determine if the endof all data has been received from the magnetic card interface. If not,the process of block 1386 is performed again to wait for the next datafrom the card interface. If all data has been received, test 1392 isperformed to determine if any errors have been sensed. If not, theroutine is exited. If so, block 1394 is performed to indicate that anerror has occurred. If test 1384 indicates that no card is present, test1396 is performed to determine if a time out condition has occurredindicating that no card has been inserted in the time alloted after acredit card request is made. If timeout has occurred, block 1394 isperformed. If not, processing returns to test 1384.

Returning to the consideration of FIG. 26B(2), if test 1380 determinesthat there is no request pending for magnetic card processing, test 1398is performed to determine if user requests have been made to scan an RFID tag such as by pushing the SC button on the front panel of the PID.If so, the processing of FIG. 26L is performed as symbolized by block1400 to handle the RF ID tag read request. The first step in thisprocess is to prepare the reader to read the RF ID tags. Typically, thisprocess will involve applying power to the reader if it is in standbymode, checking to see if a system code has been installed and installingone if no system code has been installed and configuring the reader ifit has not already been configured. The details of the configurationdepend upon the type of the reader in use, and are not critical to theinvention. The system code prevents the reader from misinterpreting datafrom other RF ID tags.

Next, block 1404 is performed to start the RF ID tag scanning. Thisinvolves sending interrogation signals out to any RF ID tags withinrange. Test 1406 determines if any RF ID tags were found within rangethat replied to the interrogation signal. If so, test 1408 is performedto determine if any errors occurred. Typically, an error might involve areply from a tag that does not have the right system code, a bad read ora CRC error.

If no error occurred, block 1410 is performed to save the RF ID tagnumbers with a time/date stamp in the PID memory or in a buffer memoryin the reader.

If an error was found in test 1408, processing is vectored to test 1409to determine if a maximum number of retries has been attempted. If themaximum number of retries has occured, block 1411 is performed togenerate an indication as to which error occurred, and then block 1413is performed to shut down the RF ID tag reader.

If test 1409 determines that the maximum number of retries has notoccurred, then processing returns to test 1406.

Returning to the consideration of block 1410, after the RF ID tagnumbers have been stored in memory, block 1412 is performed to order theRF ID tag to remain quiet for a predetermined amount of time. Then test1414 is performed to determine if there is a need to validate the RF IDtag(s) that responded. If not, test 1416 is performed to determine ifmultiple tags have to be read. If so, processing returns to test 1406.If not, block 1418 is performed to generate an indication that no errorsoccurred, and then block 1413 is performed.

If test 1414 determines that validation is needed, block 1420 isperformed to compare the RF ID tag number against a table of validatedtag numbers. Then, test 1422 is performed to determine if the number ofthe RF ID tag was found in the table. If so, block 1424 is performed toindicate that the RF ID tag number is valid, and then processing returnsto test 1416. If test 1422 does not find the tag's number in the tableof authorized numbers, block 1426 is performed to indicate that the RFID tag number is invalid. Then, test 1409 is performed.

Returning to the consideration of test 1406, if no RF ID tag was found,test 1428 is performed to determine if a predetermined time has beenexceeded with no reply from a tag. If not, processing returns to test1406. If the time has been exceeded, processing proceeds to block 1411.

Returning to the consideration of FIG. 26B(2), if test 1398 determinesthat no request to scan an RF ID tag is pending, test 1432 is performedto determine if there any pending requests for data processing. If so,processing is vectored to the data processing handler, as symbolized byblock 1434. The data processing handler is depicted in FIG. 26M. Thedata processing handler handles some aspects of the graphical userinterface by displaying menu choices, icons or both and reading andexecuting choices made by the user. The first step in this process issymbolized by block 1436 where preparations are made to handle any dataprocessing requests such as powering up the touchscreen scanningcircuitry, or, if for example a PCMCIA interface card for interfacing alarge keyboard is inserted in the PCMCIA slot for desktop operations,powering up and initializing the PCMCIA card. Generally, the process ofblock 1436 will involve powering up any circuitry necessary in theprocess of handling the data processing request. Next, block 1438 isperformed to display a list of menu choices and/or icons from which theuser can indicate what action or function is desired. Block 1440 is thenperformed to read the user's choice such as what menu selection wastouched or entered by keyboard or what icon was touched. Next, test 1442is performed to determine if the data processing mode is to beterminated. If so, the display is restored by block 1444. If test 1442determines that the data processing mode is to be continued, block 1446vectors processing to a subroutine or other process which implements therequested data processing operation and executes the operation. Theresults are then displayed on the LCD display in block 1448.

Returning to the consideration of FIG. 26B(2), if test 1432 determinesthat no data processing requests are pending, test 1450 is performed todetermine if there are any pending requests to process smart cards. Ifnot, processing returns to the top of the main loop, and the processingof FIGS. 26B(1) and 26B(2) is repeated. If there is a pending smart cardrequest, processing is vectored to the smart card handler as symbolizedby block 1452. The smart card handler routine is depicted in FIG. 26N.This handler assumes that the smart card to be processed has an RF IDtag embedded therein so the card can be read outside the PCMCIA slot solong as it is within range of the reader. Those skilled in the art willappreciate the modifications necessary to adapt the smart card handlerof FIG. 26N to a handler that can read smart cards that have contacts.The first step in the process is to prepare to read the RF ID tag basedsmart card, as symbolized by block 1454. Typically this involvespowering up reader 517 used for the smart card (or reader 314 inembodiments where this reader is shared for reading both smart cards andproducts to be purchased). Then block 1456 is performed to startscanning for the smart card transponder. This involves sending out aninterrogation signal. Test 1458 determines if there is any response. Ifthere is, block 1460 is performed to read the smart card data receivedfrom the card's RF ID tag and save in a buffer in the smart card readeror in PID memory 324. Test 1462 is then performed to determine if alldata has been received from the smart card. If not, processing returnsto test 1458. If all data has been received, test 1464 is performed todetermine if there are any errors in the received data (such as CRCerrors). If there are errors, test 1466 is performed to determine if apredetermined maximum number of retries has been accomplished. If not,block 1468 is performed to increment a retry counter and set up to readthe smart card again. Processing then returns to block 1454.

If test 1466 determines that a predetermined maximum number of retrieshas been performed, then block 1470 is performed to indicate theappropriate error has occurred, and then the handler routine is exitedback to the main loop.

Returning to the consideration of test 1464, if this test indicates thatno errors in the received data have been detected, block 1472 isperformed to parse the data for use by other routines, i.e., separateout the various data elements from the string of bits received from theRF ID tag and get the appropriate data elements to the routines thatneed this data. Then block 1474 is performed to indicate no errorsoccurred in the received data.

Returning to the consideration of test 1458, if there was no responsefrom any smart card transponder in response to the interrogation signal,test 1476 is performed to determine if a predetermined timeout periodhas expired. If not, processing returns to test 1458. If the timeoutperiod has been exceeded, test 1478 is performed to determine if apredetermined maximum number of retries has occurred. If not, processingreturns to test 1458. If so, the processing of block 1470 is performedand the handler is exited.

Returning to the consideration of FIG. 26D, when processing is vectoredto the standby mode, as symbolized by block 1248, the processing of FIG.260 is performed. Referring to FIG. 260, the first step is preparing topower down the PID by saving the software state thereof, i.e., thevarious register states, display data, program counter etc are saved innonvolatile memory, as symbolized by block 1480. Then block 1482 isperformed to set a "powerdown" flag. Next, the data storeage area wherethe machine state was stored is write protected in block 1484. Block1486 then flashes a power down message on the display and an audibleindication such a s beep is sounded to indicate the PID is going into apowerdown countdown. A downcounter is then started counting down from apredetermined number and test 1487 is performed to determine if thecount in the count down counter has reached 0 yet. If not, processingreturns to block 1486 and, after that processing, test 1487 is performedagain. When the countdown finally reaches 0, block 1488 is performed topower off all subsystems, and block 1490 is performed to execute a haltinstruction in block 1490. The PID then stays in standby mode until thepower switch or reset button or any pushbutton on the unit is engaged assymbolized by block 1492. Test 1494 is then performed to determine ifthe power management function has been restored. If not, processing isvectored to a reset routine that resets all registers and the programcounter to zero and performs the same initialization and diagnostics asare performed at power up, all as symbolized by block 1496. Then block1498 is performed to restore the software state of the PID to the stateit was in when the unit entered standby mode. Finally, block 1500 powersup the display and clears the powerdown flag, and the routine is exitedto the main loop.

Returning to the consideration of FIG. 26C, after initialization of thejump parameters processing proceeds to the icon/action handler in block1236. The icon/action handler is symbolized by the processing of FIG.26P. Block 1502 of the icon/action handler routine saves the currentstate of the PID in the manner described above with reference to step1480. After the machine state is saved, control is passed to a routinethat implements the action requested in block 1504. Whatever routine isrequested then is executed, and, after completion, control is returnedto block 1506 where the state of the machine is restored as it existedbefore execution of the routine to carry out the requested actionincluding the state of the display. The routine is then exited to themain loop.

Referring to FIG. 27, there is shown a conceptual diagram of how thepersonal information device 298 can be used in a supermarket setting. Inthis method, a first product 500 has an RF ID tag 502 embedded thereinor attached thereto. A second product 504 has no RF ID tag, but has abarcode 506 thereon. For security purposes, the items with barcodes onthem will also have a magnetized security tag 507 affixed thereto.

In the case of mixed shopping for products with both barcodes and RF IDtags, the PID 298 can be carried with a shopper as he or she goes downthe aisles of the supermarket and selects products and puts them intoshopping cart 505. The PID display can optionally display a shoppinglist as described above to aid the shopper. When the shopper picks aproduct off the shelf, the product's identification information is inputby the PID either by scanning the products's barcode or by interrogatingthe product's RF ID tag. The product ID information is stored in thememory of the PID and, optionally, may be used to alter the display of ashopping list to show that item as "checked off".

At checkout time, the product identification data stored in the PIDmemory is downloaded to the host computer 509 of the store as symbolizedby RF transmission 508. The data regarding the products the customerwants to purchase can also be downloaded by a hardware link to a localarea network coupled to the store host computer. This can be done eithervia a LAN interface to the store computer integrated on a PCMCIA cardwhich is slipped into the PCMCIA slot of the PID at checkout time, orthe PID can be slipped into a base unit at the checkout stand like baseunit 312 which downloads the stored information via the infrared linkbetween the PID and the base unit. The information downloaded into thebase unit is then downloaded to the store computer via a LAN interfaceto the store computer's local area network built into the base unit orvia an RF interface to the LAN or the host computer itself.

After the data is downloaded to the store's host computer, the storecomputer maps each item's identification to the current price for thatitem and sends back an itemized listing to the PID for printing by thePID printer or display on the PID display. The total cost of the goodsis displayed. The user then pays for the goods with cash, check, creditcard or smart card. In the case where the user pays by credit card orsmart card, the user places the credit card or smart card 510 into thePCMCIA slot of the PDA. The PCMCIA slot has one or two magnetic headsbuilt into it to read the data off the magnetic stripe of a credit card.In some embodiments, only one magnetic head will be used and the cardwill have to be placed in the slot with the proper orientation to getthe stripe over the magnetic head. In embodiments where two magneticheads are used, the card can be placed in the slot in any orientation solong as the magnetic stripe is facing the magnetic heads. The magneticheads are positioned so as to not interfere with entry or exit of aPCMCIA card. The magnetic heads of the magnetic stripe reader arecoupled to a magnetic stripe reader interface circuit 512 in FIG. 19 ofconventional design such as is already known in credit card readers usedin many retail point of sale facilities. The software that controlmicrocomputer 320 receives the credit card number, user name, expirationdate or whatever information is stored on the credit card magnetic stripand downloads this information to the host computer through one of thecommunication paths described above. The host computer then initiates acall to the credit card purchase authorization computer and receivescredit authorization for the purchase in a conventional manner. Ifcredit authorization is declined, the host computer transmits a messageto the PID via LAN or RF link for display on the PID display indicatingthat credit has been declined. The user then pays by some other means.

In case the user wishes to pay by smart card, the user places his smartcard into the PCMCIA slot. The PCMCIA slot has a set of electricalcontacts that are positioned in the slot so as to not interfere withentry or exit of a PCMCIA card but so as to contact the contacts on theback side of a smart card. These contacts are coupled to a conventionalcontact type smart card interface circuit 512. This interface circuitsends data to and receives data from the smart card at whatever signallevels and format are used by the smart card and in whatevercommunication protocol is used by the smart card. More precisely, thecommunication protocol is implemented as part of the software whichcontrols operation of the microcomputer 320. This software queries thesmart card to determine whether the balance of the user's bank accountor some other prepurchased credit amount stored in the memory of thecard is sufficient to cover the total charge for the user's currentpurchases. If it is, the software writes data to the smart card to causeit to debit the amount of the purchase from the balance on the card andthen communicates the fact that the goods have been paid for to the hostcomputer of the store by one of the communication paths described above.

In alternative embodiments, the PCMCIA slot of the PID can also acceptsmart cards which do not have contacts but which have embedded thereinRF ID tags to store the balance data. FIG. 28 is a block diagram of sucha card. The smart card 602 of FIG. 28 is extremely simple in that itonly has embedded therein an RF ID tag 604 with all the circuit elementsshown in FIG. 20. Since the function of the smart card is simply tostore data indicating how much money the card carrier has available forpurchases, and since the RF ID tag has such a memory and the circuitryto read and write it, there is no need for a microprocessor or othercircuitry to be integrated on the smart card to read and write thememory. In the smart card 602 of FIG. 28, the RF ID tag 604 is used torecord the remaining balance and the microprocessor 320 of the PID doesall the calculations.

FIG. 29 is a flow chart of the process carried out in the PID by theapplication program that interfaces with the host computer 509 and bythe application program in the host to interface with the PID and acredit card purchase authorization center. The first step in thisprocess is receipt of some indication from the user that shopping isfinished as symbolized by block 519. This can be any signal such as atouch at a specific place on the touchscreen displaying a "shoppingfinished?" query, docking the PID with a base unit at the checkoutstation, etc. Next, the identification codes of the items to bepurchased read by the PID through the barcode scan engine or the RF IDtag interrogation circuit are downloaded to the host computer, assymbolized by block 521. Block 521 also represents the process ofdownloading the customer's identification data to the store hostcomputer. The host computer then maps the product ID's to the currentprice for the product and generates an invoice with a total. The data ofthe invoice is then sent by the host computer 509 back to the PID 298 ora base unit into which the PID is plugged either by RF link 508 in FIG.27 or through a LAN and LAN interface circuit plugged into the PCMCIAslot of the PID. The process of receiving the data describing the itemspurchased and their individual prices and the order total at the PID issymbolized by block 523. Block 525 symbolizes the process carried out bythe PID of displaying the descriptions of the goods to be purchased andthe order total on the touchscreen and/or printing the informationreceived from the host computer. Block 525 also symbolizes the processcarried out by the PID of querying the user for the type of payment orfor any changes in the order. If the user desires to make no changes, heor she selects a mode of payment. If the user wishes to add or delete anitem, a process similar to the process described in FIG. 35A, steps 605,607 and 609 is carried out. The user then selects the method of paymentby pressing one of four or more special display areas on the touchscreenlabelled cash, check, credit card and smart card, and this selection issent to the host computer, all as symbolized by block 540. If the userselected an option to pay the checkout clerk by cash or check,processing is vectored to the process symbolized by the flowchart ofFIG. 29C carried out by the satellite CPU/terminal 501 in FIG. 27operated by the clerk and the store's host computer. If user selected anoption to pay by credit card, processing continues to block 527. If theuser selects an option to pay by smart card, processing is vectored tothe processing of FIG. 29B.

If the user elects to pay by credit card, the user places credit card510 in FIG. 27 into the PID PCMCIA slot. The magnetic heads in thePCMCIA slot then read the magnetic strip on the back of the credit card.The magnetic strip card reader 512 in FIG. 19 then sends the data tomicrocomputer 320 where it is recorded in system memory 324, all assymbolized by block 527. This can be done preferably by sending the carddata to the base unit 312 via the infrared transceiver 440 in FIG. 19and from there via a LAN interface or RF link built into the base unitto the host computer. This leaves the PCMCIA slot free to read the card.In other embodiments, the card data is sent to the host computer via aLAN interface or RF LAN link to the host computer built onto a PCMCIAcard, all as symbolized by block 529.

After, the data read from the card is then sent to the host computer 509in FIG. 27, it is used by the host to automatically initiate contactwith a credit card purchase authorization center by modem or direct linkas symbolized by block 531. The host computer sends the order total andthe merchant identification number to the authorization center andreceives back an authorization code as symbolized by block 533.

In alternative embodiments, the user can swipe his or her card through acard reader on the terminal of the checkout clerk and the checkout clerkor the card reader can initiate the transaction with the card processingcenter seeking purchase authorization. This process is also symbolizedby block 531, and, in this embodiment, blocks 527 and 529 may beeliminated and block 531 should be rewritten to indicate that theclerk's card reader located at the checkout location initiates thecredit card purchase authorization call.

If the user selected payment by smart card in step 540, the processingof FIG. 29B is performed. First, the PID prompts the user to insert asmart card in the modified PCMCIA slot 300 of the PID. As noted earlier,the PCMCIA slot 300 has been modified to not only include magnetic headsfor reading magnetic strips on credit cards, but also includes a set ofelectrical contacts to contact the electrical contacts on the back sideof conventional smart cards. Step 627 symbolizes the process of checkingthe PCMCIA slot for the presence of a smart card, and if no card ispresent, displaying a prompt on the touchscreen asking the user toinsert the card.

Block 629 represents the process carried out by the PID of querying thesmart card for its current balance. In the preferred embodiment, this isdone by the conventional electrical contact smart card interface 514 inFIG. 19 under control of the microcomputer 320. In an alternativeembodiment, if the smart card has an RF ID tag embedded therein whichstores the account balance, the smart card will be queried by anoncontact smart card interface 517 in FIG. 19. This interface is aradio frequency transceiver like the RF ID tag reader/writer interface314 but on the frequency of the smart card. In alternative embodiments,the noncontact smart card interface 517 can be combined with the RF IDtag reader/writer interface 314, and if the smart card RF ID tag and theRF ID tags on the items to be purchased are on different frequencies,the microcomputer 320 can send a command to the RF ID tag transceiver314 to cause it to switch to the appropriate frequency beforeinterrogating the RF ID tags in the items to be purchased or the RF IDtag in the smart card.

Block 631 represents the process carried out by the PID of receiving thecurrent balance available for purchases data transmitted to it by thesmart card either from the RF ID tag embedded therein or through theelectrical contacts and comparing this balance available for purchasesto the order total. If the order total is less than the balanceavailable for purchases, step 633 is performed to deduct the order totalfrom the balance available for purchase and writes the new balance datato the smart card via smart card interface 514 or 517. If the balanceavailable for purchase is insufficient, process is vectored to block635. If the balance available for purchase is sufficient, path 639 istaken to step 533 on FIG. 29A where the host receives a "paymentreceived" signal from the PID and generates a security tag deactivationsignal.

If the balance available for purchase is less than the order total,block 635 is performed by the PID to advise the user of an inadequatebalance and query for a new method of payment. This is typically done bydisplaying on the touchscreen of the PID a message saying "inadequatebalance, please select a new method of payment" and displaying areas onthe touch screen that can be touched to select credit card orcash/check. Block 637 represents the process of receiving the user'sselection of a new method of payment and vectoring processing to theright place. In the case where the user has selected payment by creditcard, processing is vectored to block 527 in FIG. 29A. If the user hasselected cash or check, processing is vectored to the processing of FIG.29C.

Referring to FIG. 29C, there is shown a flowchart which represents theprocess carried out by the checkout clerk's terminal or satellite CPU501 in FIG. 27 and the store host computer 509 of receiving an inputsignal from the clerk that the customer has paid for the order with cashor a check and sending a signal deactivating the security tags. Block639 represents the process in the clerk's terminal or satellite CPU ofreceiving a command from the clerk indicating that cash or an approvedcheck has been received and requesting that the host computer benotified of this fact. Block 641 represents the process carried out bythe clerk's computer/terminal of sending notification to the hostcomputer 509 that the proper amount of cash or a check for the properamount has been received by the store and the amount of cash or checkreceived. Block 641 also represents the process of sending thecustomer's identification number and the checkout stand number to thehost computer for matching the payment data to the order number andorder total and for informing the host computer where the security tagdeactivation command should be sent. The clerk can enter the customernumber manually or obtain it from the PID through the PID's link to thehost computer through the local area network of the store or through thePID's linkup to the checkout clerk's computer/terminal 501, dependingupon the embodiment. In FIG. 27, the lightning bolts 643 represent anembodiment where the PID is coupled to the clerk's terminal/computer 501directly and from there to the host computer. Lightning bolts 643represent either a hardwired connection via a serial or parallel dataport in the PCMCIA slot of the PID, a LAN connection to the host andindirectly to clerk's computer/terminal 501 or a simple radio linkbetween an RF ID tag in the PID storing the customer's customer IDnumber and an RF ID tag interrogator in the clerk's computer/terminal501.

Block 643 in FIG. 29C represents the process carried out in the hostcomputer of matching the payment data and customer identification datato the pending order, and if a match is found and the amount received iscorrect, the host computer sends a security tag deactivation signal tothe security tag deactivation circuit 518 in FIG. 27 located at thecheckout stand where the customer made the payment. This command causesall the RF ID tags to be written with data indicating the item has beenpaid for and causes all magnetic security tags to be demagnetized.Processing is then vectored to the end routine which readies the storehost computer and clerk's CPU/terminal for the next customer.

Once the goods have been paid for by whatever means, the host computerof the store then sends a command to a security tag deactivation circuit518 at the checkout station to transmit a security code 520 to the RF IDtags on the goods in the basket to disarm them. The RF ID tags receivethis security code and change security data stored therein so as torespond differently to a security query than they otherwise would. Thesecurity tag deactivation circuit 518 also includes a magnetic pulsegenerator that demagnetizes magnetized security tags such as tag 507 sothat they will not set off security alarms at the store exits. Theprocess of sending the security tag deactivation signal to the securitytag deactivation circuit 518 via data path 526 in FIG. 27 is symbolizedby block 533.

Security tag deactivation is done as follows. Typically, the purchasedgoods are placed in shopping bags such as bag 522 as the checkout clerkis waiting for the purchase authorization code to be obtained. Thesebags are placed in a well in the security tag deactivation circuit. Whenthe clerk is done bagging, he so indicates by entering a code to thecomputer which then sends a signal via data path 526 to the security tagdeactivation circuit 518 to deactivate the security tags if the host haseither received a purchase authorization code or the clerk indicates viahis terminal that cash or check has been received. The security tagdeactivation circuit 518 then generates a magnetic pulse to demagnetizeall magnetic security tags and then sends the security code to all RF IDtags although this can also be done while the goods are still in thebasket also. To prevent RF ID tags in baskets in line behind theshoppers basket from replying to the product identification code inquiryor from being deactivated, the cart currently in the checkout processcan be shielded from carts in front of it and behind it in someapplications by pushing it into a checkout area which has RF shieldingbuilt into the walls thereby preventing stray inquiry and securitydeactivation transmissions from reaching tags on products not currentlybeing checked out. However, in the preferred embodiment, thetransmission power of the RF ID tag reader at the checkout station islowered so that only RF ID tags within a small effective range reply tothe interrogation signals and RF ID tags outside this range do notreceive enough power from the transmitter to activate. The effectiverange is set so as to not include carts ahead of or behind the cartbeing checked out.

The exits of the store have a security portal 516 which can detect anymagnetized security strips that pass therethrough in a still magnetizedstate. The security portal also has a motion detector to detect whenanything is moving through the portal and an RF ID tag securityinterrogation circuit which generates an RF signal that interrogates anyRF ID tags passing through the portal. Any RF ID tag on an item that hasnot been paid for returns a code to the security portal 516 in responseto the security authentication transmission which sets off an alarmand/or notifies the host computer via signal line 524. In the preferredembodiment, the RF ID tags attached to products will have a Turn Offcommand in their instruction set which will be invoked when the goodsare paid for. In these embodiments, the security portal will interrogateall RF ID tags passing through the portal and will notify security ifany reply is received. In another alternative embodiment, each RF ID tagwill store its own serial number of that RF ID tag, and the PID willdownload the tags serial number in addition to the product class code orserial number of the product to which it is attached. These tag serialnumbers will be downloaded to the host computer which will send them tothe security portal. The security portal then interrogates all tagspassing therethrough and asks for their tag serial numbers. The repliesare then compared to the serial numbers of the tags that have been paidfor to determine if there is any variance.

Referring to FIG. 30, there is shown a block diagram of the security tagdeactivation circuit 518 in FIG. 27. This system is comprised of an RFID tag transmitter 530 and a demagnetization pulse generator 532, bothunder control of host computer 509.

Referring to FIG. 31, there is shown a block diagram of the securityportal 516. This unit is comprised of a conventional motion detector534, which may be of the ultrasonic or infrared type, and an RF ID tagtransmitter 536. The system also comprises a conventional magnetic fluxdisturbance detector of the type currently used in security portals ofretail outlets that use magnetized security tags.

An alternative security method is illustrated in FIG. 32. In thismethod, the weight of the items in the basket is used as an indicator asto whether all items in the cart have been paid for. In this method, theitems in the cart to be purchased, represented by circles 535, 537 and539, all have RF ID tags embedded therein or placed thereon in apermanent fashion. Hopefully, each item will have been scanned by thePID as the user places them in the cart. Each RF ID tag records in itsmemory not only the product identification code identifying the classthat the product belongs to but also a serial number of the particularitem. For items of uniform weight, the product ID is enough, but foritems of unique weight such as packages of meat, frozen turkeys,produce, clothing items, hardware, tools, batteries, etc., the serialnumber will be mapped in the memory of the host computer to the specificweight of that particular item. The scanned information gathered by thePID about the particular items the user wishes to purchase anddownloaded to the host computer of the store will include both theproduct ID's as well as the serial numbers of the particular items to bepurchased. The method carried out by the PID and host computer to carryout this security method is as shown in FIG. 33. First, the userconnects to the store host computer in block 541. This can be doneeither by docking the PID with a charging unit that has either ahardwired or RF connection to the host LAN or by a LAN connection whichis either RF or hardwired through a PCMCIA interface circuit in thePCMCIA slot of the PID. PCMCIA form factor hardwired and RF LANinterface cards are known, and the details thereof are herebyincorporated by reference. Once the connection is established to thehost computer, the user downloads the data gathered from the RF ID tagsof the items scanned in the step symbolized by block 543.

The user then loads the products from his cart into a bag or othercontainer 545 and loads the bag on an electronic scale 547 at thecheckout station. The user also enters his user ID number on a keyboard(not shown) at the checkout station 549 and presses a button to causethe scale to weigh the bag and another button to tell the scale when thelast bag has been weighed. This process of loading the scanned productsin bags on the scale 547, entering a user ID number and pressing thebutton when the last bag has been weighed is symbolized by block 551.When the button for the last bag has been pushed, the scale 547 totalsthe weight of the order and sends the total to the host computer via LANor direct connection 555, as symbolized by block 553.

Block 557 symbolizes the process where the host computer calculates thetotal weight of the scanned items by using the product serial numbersand/or product class data received from the PID and compares this weightto the actual weight data of the items in the bags placed by the user onthe scale 547 sent to the host by the scale.

Block 559 represents the process of making the determination in the hostcomputer if the weight of the order calculated from the serial numberand product class data is close enough to the actual weight. If it is,the consumer has been honest, and the host computer can send a commandto a security tag deactivation transmitter 561 to deactivate thesecurity tags as soon as the user pays for the goods. Payment is thenprocessed as in earlier described embodiments. Once the host computer issatisfied that the user has paid for the goods, the host computer sendsa command to the security tag deactivator 561 to deactivate the securitytags. The transmitter sends a transmission to the RF ID tags on theproducts in the bags to cause them to alter the data stored in theirinternal nonvolatile memories to indicate the goods have been paid for.The entry and exit ports of the store all are equipped with securityportals like the portal 516 (although no magnetic disturbance detectioncircuitry is necessary). As the consumer passes through the portal, theRF ID security tags are queried, and if any returns a signal that it hasnot been paid for, an alarm is sounded and a security guard stops theconsumer.

If the process of block 559 indicates a mismatch in weights has beenfound, the host computer sends a message to alert a security clerk atthe checkout stations to request an audit of the contents of the bags.The host computer also sends an itemized list of the items that havebeen scanned and downloaded to the host by this user for use by thesecurity clerk. The security clerk audit message and sending of detaildata is symbolized by block 563.

Referring to FIG. 34, there is shown a symbolic diagram of how the PIDdisclosed herein can be used to implement an entirely new form ofshopping that cuts down on store labor requirements. In this form ofshopping, the customer does not pick and place his or her own groceriesin a shopping cart as this is done for the customer in an inventorystorage warehouse 600. The customer enters a store 602 either with hisor her own PID 604 or checks out a PID from a vending machine orrecharging cradle which releases a PID when the customer places a validcredit card into a credit card reader on the machine. Such a machine isnot shown in FIG. 34, but is known and in public use in the Netherlandsby Dutch grocery company Royal Ahold.

In the Royal Ahold system, as described in a January 1995 article inIDSystems at page 76, a customer enrolls with the store, presumably tohave various background checks made on the honesty and credit worthinessof the customer. If the customer is invited to join the program, thecustomer is issued a magnetic stripe card for use when the customerenters the store. This card is used to access a handheld barcode scannerdevice from a dispenser. The dispenser is linked to the store computerand downloads the identity of the customer and the serial number of thescanner provided to the customer from the dispenser. As the customershops, he or she scans the items on the shelves that the customer wishesto purchase and places them in his or her shopping cart. A plus buttonis pushed on the handheld scanner each time an item is scanned. A minussign button allows the user to delete an item from an order. A buttonwith an equals sign provides a display of the current order total. Whenfinished shopping, the customer returns the handheld scanner to thedispenser which generates an itemized barcoded receipt. Then thebarcoded receipt is taken to a special checkout area where a scannerreads the barcodes and uses the information to look up the order totalso that payment can be collected.

Referring to FIGS. 35A-35B, there is shown a flow chart of theprocessing which occurs in the computer system which supports this newmethod of shopping. Discussion of FIGS. 35A-35B will be simultaneouswith the discussion of FIG. 34.

Returning to the consideration of FIG. 34, after the consumer hasobtained a handheld scanner, the consumer uses the scanner to gatherdata about the items the user wishes to purchase. Typically, the storewill have shelves 606 upon which one item of each category is placed forscanning. Alternatively, the store can have pictorial and textualdisplays for each product on the shelves 606 with barcode informationidentifying the product on each display. Each display can also have anRF ID tag attached thereto for loading information to the PID upon beinginterrogated thereby. The customer will stroll down the aisles and studythe displays and either scan the barcode on any display of a product hewishes to purchase or interrogate the RF ID tag on the display. Thisselection process is symbolized by block 601 in FIG. 35A. Alternatively,the user can use one of the pre-stored shopping lists or a customdesigned shopping list which is displayed on the display of the PID as achecklist for scanning needed items.

In the case of an RF ID tag on a product display, each display will havean RF shield around it to prevent other RF ID tags from replying to theinquiry. To scan the item, the user places the PID inside the RF shieldand gives the interrogate command.

In the case where the user already has a shopping list made out and doesnot care to browse, the entire shopping list can be recalled from adatabase in the PID of items previously scanned in that store onprevious visits. The entire shopping list can then be downloaded intothe base unit and then to the host without wasting time walking aroundin the store. This has the potential to save large amounts of time forbusy consumers.

Once the user has scanned all the items that are to be purchased, theuser goes to a checkout station 608 and docks the PID and downloads allscanned information to the store's host computer 610 as symbolized byblock 603. In the preferred embodiment, the customer docks the PID witha base unit 312 at the checkout station 608 and then downloads thescanned information into the base unit via the infrared link previouslydiscussed. The base unit then downloads the scanned information to thehost computer via a local area network link or an RF link as symbolizedby data path 610. Alternatively, the customer can return the PID to adispenser unit at the checkout station 608 which then downloads thescanned information to the host computer, all as symbolized by block603.

The host computer totals the order and generates an itemized, electronicpreliminary invoice and sends the information back to the base unit ordispenser for display to the user for any necessary changes, all assymbolized by block 605. The user then enters any changes by deletingitems from the list or possibly adding some items, all as symbolized byblock 607. Items can be deleted by highlighting the item using apointing device such as a light pen, touchscreen or mouse. If the userwishes to add an item, an add command is given by touching a particulararea of the display. The user is then presented with a display of thebroad categories of products, e.g., breads, dresses, tools, fruits andvegetables, cleaning products, jams and jellies, etc. The user thenpicks an area and a submenu of more narrow categories is displayed.After a subcategory is picked, or if the general area is not broadenough to warrant subcategories, a list of items in the selectedcategory and subcategory are displayed. The user then highlights thedesired item and gives an add command to the base unit or dispenser atthe checkout station. The item is then added, and the user is queried asto whether any other items are to be added. If not, the user soindicates, and the changes are sent to the host computer for revision ofthe invoice and final order totalling. The final invoice with changesincorporated is then sent by the host computer to the checkout station608 for printing and payment by the customer, all as symbolized by block609.

Payment for the order is then collected in one of the manners describedabove with reference to FIGS. 29A, 29B or 29C, and the checkout stationsends a "paid" message to the host computer, all as symbolized by block611.

Block 613 of FIG. 35B represents the process of the checkout stationsending the customer's identification data (name) and PIN or personalidentification number to the host computer via the data path 610. Thisdata is needed by the host computer for transmission to the warehousefor use in authenticating the customer when the customer picks up hisorder.

The host computer then sends the final invoice to the warehouse 600 fordisplay to a bagger 612 and printing, as symbolized by block 615. Thebagger retrieves the printed copy of the order or uses a video display(not shown) to pick the items on the order one by one from shelves orpallets, symbolized by block 614. The bagger then places the order inbags placed in cart 616 along with the printed invoice containing thecustomer name and an unprinted PIN number, and wheels the cart out to acustomer pickup area where a pickup clerk receives the basket. Thepickup clerk types in the name of the customer into a satelliteprocessor which received the original order data, customer ID data andPIN number from host computer, as symbolized by block 617. The pickupclerk then calls for the customer and asks that the customer type hisPIN number into a special PIN terminal in the customer pickup areacoupled to the satellite processor, as symbolized by block 619. Thesatellite processor then authenticates the customer picking up the orderby comparing the PIN number typed in by the customer to the PiN numberreceived from the host computer, as symbolized by block 621. If the PINnumbers match, the satellite processor informs the pickup clerk bydisplaying an authentication message, or sends a denied message if thePIN numbers do not match, as symbolized by block 623. If the customer isauthenticated, the pickup clerk releases the bags of groceries to thecustomer, as symbolized by block 625.

Referring to FIG. 36, there is shown a flow chart of an automatedsorting process to maximize efficiency in using space in the shoppingbags used to pack the purchased items to reduce bag usage. The processof FIG. 36 starts out at block 647 with the host computer sending thefinal invoice and product identifications to the autosort process. Theautosort process can be carried out either on the host computer or onthe satellite computer at the warehouse location where bagging of thepurchased items is to take place. Block 647 symbolizes getting the finalinvoice items to wherever the autosort process is to be carried out.

In block 649, the autosort process looks up the weights and volumes ofall the items on the final invoice using their product identificationcodes and/or serial numbers downloaded from the PID. The list of itemson the final invoice is then sorted by weight, and a sorted list ofitems ordered by weight is then generated, all of which is symbolized byblock 649.

In block 651, the autosort process makes a rough estimate of the numberof bags that will be required by totalling the volume of all items onthe final invoice. A bag list is then started in memory for each bag tobe packed based upon the estimate of the number of bags required. Thesorted list generated in block 649 is then used to spread out theheaviest items among the bags on the bag list. This is done by spreadingout among the various bag lists the product ID data for the heaviestitems on the final invoice. The items assigned to bags are then "tagged"on the list sorted by weight with the bag numbers of the bags in whichthese items are supposed to go.

Block 653 represents the process of calculating the current bag weightsto determine which bags are the heaviest so far with the heaviest itemsdistributed by the process represented by block 651. Then the listsorted by weight in the process represented by block 653 is modified byremoving therefrom the items already distributed to the various baglists. Block 653 also represents the process of using the volumes of theremaining items on the newly modified list sorted by weight which arenot already assigned to bags and resorting the list in ascending orderusing as a sort key an index calculated by multiplying volume times avolume weighing factor times the weight times a weight weighing factor.The weighing factors are selected so that the resulting sorted list willhave the largest, lightest items first and the smallest, heaviest itemslast. The purpose behind this extra sort is to avoid concentrating toomuch weight in one bag simply because that happens to be the mostefficient use of the bag volume. To achieve this end, block 653 alsorepresents the process of distributing the largest, lightest items fromthe index sort list to the bag lists having the heaviest weight. Thedistribution is such that the largest, lightest item is distributed tothe heaviest bag, the next item on the index sort list is distributed tothe next heaviest bag and so on until some user programmable (in someembodiments, the number can be fixed) number of additional items hasbeen added to each bag list. After the largest, lightest items aredistributed in this manner to the bag lists, the items so distributedare removed from the index sorted list, and the remaining items on thelist are used as the new sort list for purposes of processing in block655.

Block 655 represents the process of computing the volumes remaining inthe bags on the bag list using the known volumes of the bags and thevolumes of the items distributed to each bag list. In some simpleembodiments, the volumes of the items on each bag list may be totalledand subtracted from the bag volume. In more complicated embodiments, theshapes of all items on each bag list can be looked up and a 3-D model ofthe contents of the bag built in memory followed by a calculation of theremaining volume in each bag.

Once the remaining volumes in each bag are calculated, the process ofblock 657 is performed. This process looks up the shape of each objectremaining on the sorted list generated in block 653 and prepares themfor the modelling process to be performed represented by block 661. Theprocess of block 659 calculates the likely shapes of the remainingvolumes in the bags on the bag list based upon the shapes of the objectsalready distributed to the various bags on the bag list. Finally, themodelling process of block 661 tries various combinations of the itemson the list of remaining items to be assigned to the bag lists basedupon their shapes more or less like an automated Tetris game to try tooptimize use of the remaining bag space. More precisely, the bagoptimization process compares the shapes and volumes of the itemsremaining on the list that have yet to be assigned to a bag list andbuilds 3-D models trying to optimize bag lists by sorting the remainingitems to the various bag lists based upon a criteria of maximumefficiency in using remaining bag space. The bag optimization processthen sends the optimized bag lists to the warehouse or bag packinglocation for display and/or print for use by baggers in retrieving thepurchased goods and placing in the bags in the order stated on the baglists, as symbolized by block 663.

Referring jointly to FIGS. 37 and 38, there is shown, in FIG. 37, asemi-automated bagging apparatus, and, in FIG. 38 a flow chart of theprocess carried out by a satellite CPU 665 in FIG. 37 to implement asemiautomatic bagging process. In FIG. 37, the goods in the storeinventory are stored on an array of shelves 667 or in bins. The shelvesor bins are within range of a computer controlled robot picker 669. Thepurpose of the robot picker is to pick up items off the shelves undercontrol of the satellite CPU 665 and place the items on a conveyor belt671 for delivery to a bagging station 675. The conveyor belt 671 isdriven by motor 673 which is under control of satellite processor 673although in some embodiments, the conveyor can simply run continuouslywith no computer control or its movements can be controlled manually.

In the embodiment shown, the robot picker 669 is shown as a pair ofrobot arms 677 and 679 driven by a control mechanism 681. In alternativeembodiments, the robot mechanism can be eliminated, and each type ofproduct in inventory can be stored in a bin with an eject mechanismdesigned to dispense one item at a time onto conveyor belt 671 undercontrol of the satellit processor 665. The eject mechanisms can besimilar to the types of mechanisms used in vending machines but scaledto the proper size and engineered to take into account the delicacy ofthe product. For example, the delivery mechanism for the egg bin may besubstantially different from the delivery mechanism for the cannedpeaches bin. For example, the delivery mechanism for the egg bin may besimply another smaller conveyor belt that moves egg cartons out over themain conveyor belt 671 and gently slides them onto the conveyor belt671. The delivery mechanism for the canned peaches may a pneumatic tubethat shoots cans of peaches onto the belt 671 like torpedoes with asuitable velocity or other control mechanism such that the cans do notbounce off the belt.

The control mechanism 681 is coupled to the satellite CPU 665 by datapath 683, and rides up and down the Y axis along vertical rail 685. Thevertical rail rides horizontally along a pair of rails 685A and 685B.The vertical movements of the control mechanism 681 along rail 685 andmovements along of the vertical rail 685 along the horizontal rails 685Aand B are controlled by satellite CPU 665. The satellite CPU alsocontrols the movements of the robot arms 677 and 679 to pick up an itemof merchandise from the shelves after the robot has moved to theposition of the item on the shelves.

Processing of the system shown in FIG. 37 is as follows. In FIG. 38,block 691 represents the process of the satellite CPU 665 receiving thefinal list of items to be purchased on the final invoice from the hostcomputer 509 via data path 693 and generating the bag lists and thenselecting a bag list for processing. The bag lists are generated in themanner described in the flow chart of FIG. 36 or in any other process ofoptimizing the efficiency of usage of the volume of the bags. Inalternative embodiments, the bag lists may be generated by the hostcomputer and sent to the satellite CPU.

In block 695, the satellite CPU reads the bag list for the bag currentlybeing processed and selects the next item on the list. Block 695 is thefirst step in a DO loop that is repeated until all items on the bag listhave been processed. The process of block 695 starts with the heaviestitem on the bag list the first time through the DO loop as the heaviestitem will be the first item on the bag list. It is desirable to placethe heaviest item first on the bag list so that it goes in the bottom ofthe bag so as to not crush lighter items below such as loaves of bread,eggs etc.

Next, block 697 is performed where the satellite CPU commands the robot669 to position itself at the position on the shelves of the next itemon the bag list (the item selected in block 695 for the current passthrough the DO loop). To do this, the satellite CPU looks up thecoordinates on the shelves of items of the type currently beingprocessed and generates suitable X and Y axis translation commands andsends them to motor controllers driving wheels 699 and 701 so as tocause the robot to be positioned at the location of the stock of itemsof the type currently being processed. Block 697 also represents theprocess carried out by the satellite CPU of generating suitable controlcommands to the robot 669 to cause it to pick up an item of the typecurrently being processed and place it on the main conveyor belt 671.The details of how this is done are not critical to the invention andany conventional robot technology that can accomplish this task willsuffice. Preferably, the robot will have machine vision capabilities tobe able to locate an item of the desired type in the location wherethese type items are stored even though the stock is being depleted andthe position of the next item to be picked up is changing. Inalternative embodiments, a new item will be moved to a centralizedpickup point at known coordinates within the space designated in thememory of the satellite CPU for items of that type each time an item ofthat type is removed from the storage area. In this way, the robot canbe "dumber" and less expensive in that it need not have machine visiontechnology since it only needs to know one place from which pickups aremade for each type item.

In block 703, the satellite CPU orders the conveyor belt 671 to movesufficiently to make room for the next item on the bag list to bedeposited on the conveyor belt. In alternative embodiments, where thebelt 671 is not under control of the satellite CPU 665, such as where itis moving at all times, step 703 may be eliminated.

Block 705 represents the process of testing to see if the satelliteprocessor has caused the robot to pick up the last item on the currentbag list being processed. If not, path 707 is taken back to the processof block 695 where the next item on the bag list is selected forprocessing. If the last item on the current bag list has been picked up,path 709 is taken to the process of block 711. Block 711 is a processwherein the satellite CPU generates suitable motor control commands tothe motor controller for motor 673 to cause it to move the conveyor beltsuch the first bag's items are moved to the bag packing station 713.

In the embodiment shown in FIG. 37, a human bagger 715 stands at thebagging station and removes items from the belt 671 and packs them intobags such as bag 717 in cart 719. Block 721 represents the process bywhich the satellite CPU assists the human bagger in these duties bysending the first bag list to video display 723 with an image oranimation of the optimum bag volume utilization developed by theautosort process of FIG. 36. Since the arriving items on belt 671 willbe in the order in which they are to be packed in the bags, the videodisplay, in the preferred embodiment, can be driven via data path 725with an animation similar to the animation used in the Tetris video gameshowing the bagger how to place that item in the bag for greatestefficiency in using the bag volume. This display or animation can betriggered by an RF ID tag reader that reads the item's RF ID tag as thebagger removes it from the belt, looks up the serial number of the itemin the bag list and its planned position in the bag and then generatesan animation and picture of the bag in its current state of fill or inthe planned filled state with the position and orientation of the itemjust picked off the belt highlighted. The animation or video display cantake many forms and the details are not critical to the invention. Insome embodiments, the video display and the picture of how the bag issupposed to be packed can be eliminated altogether, and the experienceof the bag person can be relied upon to make the most of the bag volume.

Block 723 represents the process of selecting the next bag list andrepeating the above described process until all bag list are processed.The bagger or another employee then rolls the filled bags in cart 719out to the customer pickup area.

In an alternative embodiment, the human bagger 715 can be eliminated anda robot bagger substituted. The robot bagger can used conventionalmachine vision technology or the conveyor belt can be controlled usingmachine vision or some other known techniques such breaking of infraredbeams across the belt so as to stop the belt when the item to be pickedoff the belt by the robot bagger is precisely located in the positionthe robot bagger is expecting to find the item. The robots used inautomobile manufacturing are one example of the types of robots thatcould be used for the robot bagger.

Referring to FIG. 39, there is shown a flow chart of a process carriedout by the PID (Personal Information Device) and host computer insupport of answering user inquiries for more information about productsthey are contemplating buying. Block 731 represents the process carriedout by the PID of receiving a command from a user to interrogate the RFID tag of a particular product about which the user desires to have moreinformation. For example, a user might be shopping for software andmight want to know the compatibility, machine hardware requirements,capabilities etc. of a particular software program. Instead of having torely on obtaining this information from a salesperson who may not know,may be misinformed or who may not be able to clearly communicate thedesired information, the user may obtain the information directly fromthe store's host computer.

Interrogation of only the RF ID tag of the product in question asopposed to RF ID tags of products on the shelf next to it can beaccomplished by lowering the transmit power of the RF ID tag reader 314so that it can only read tags within a very short range, for exampleabout 3 inches. The user then removes the product from the shelf, holdsit next to PID and gives the interrogate command. Any RF ID tag that isnot within 3 inches will not receive enough power to operate and willnot respond. In the preferred embodiment, the RF ID tag reader will havea command in its instruction set by which the microcomputer 320 in FIG.19 can set its power.

After the PID interrogates the RF ID tag of the product in question, thePID downloads the product class and/or species identifier to the hostcomputer in any known manner such as by direct serial or parallelconnection, PCMCIA LAN connection, RF LAN connection, infrared LANconnection etc., all as symbolized by block 733.

Block 735 represents the process of the store host computer downloadingto the PID product information about the product or a menu of options toget more information in various categories about the product. Forexample, the store host computer might download a menu that includesselections for "consumer safety information", "% of total calories fromfat", "nutritional information", "other related products", "uses andmanner of using" and so on. Block 737 represents the process carried outby the PID of receiving a user menu selection and sending this menuselection to the host computer. Block 739 represents the process of thehost receiving the menu selection and sending more data to the PiD inthe category corresponding to the menu selection. The PID can displaythis information on its touchscreen display or print it out.

In an alternative embodiment, a product information kiosk can be set upin a store so that customers can bring products about which they havequestions to the kiosk to obtain more information. In this embodiment,the kiosk could incorporate an RF shield to prevent unwanted RF ID tagsfrom responding. However, in the most inexpensive embodiment, the kioskwill be located sufficiently far from any other products in the storeand the RF ID tag reader power will be set low enough such that only thetag on the product about which the user desires more information willreply. The kiosk will not only have an RF ID tag reader in it but willalso have a video display and/or printer coupled to the store hostcomputer by a local area network. In another alternative embodiment, theproduct information kiosk can contain its own computer that stores allnecessary information thereby eliminating a connection to the store'shost computer. In this embodiment, the process of FIG. 39 is carried outexcept the RF ID tag reader in the PID is not used and the RF ID tagreader in the product information kiosk is substituted. The user willtypically bring the product to the kiosk or bring a small display cardassociated with the product with an RF ID tag encoded with the product'sclass and/or species information. The RF ID tag of the product ordisplay card will then be read by the kiosk's RF ID tag reader, and theproduct information sent to the store's host computer or the computer inthe kiosk. The desired information or a menu of categories for whichmore information is available is then displayed and/or printed in thekiosk.

Referring to FIG. 40, there is shown a flow chart for processing carriedout by a PID, an authentication kiosk and a factory host computer toauthenticate a pad or product which a user is contemplating buying asbeing not counterfeit. The problem of counterfeit goods has been on therise. The counterfeit airplane pads business is so lucrative that manydrug dealers are quitting the drug business to sell counterfeit airplanepads. This extremely dangerous since several plane crashes have beencaused by failure of counterfeit pads such as bolts, turbofan compressorblades etc. In FIG. 40, a part which is available for purchase is placednext to the user's PID and an RF ID tag attached to or embedded in theproduct itself (or its secure packaging) is interrogated by the PID.That is, the user gives a command which causes the PID to interrogatethe RF ID tag of the product and download the product class/speciesidentifier and the product's serial number. Then the user takes the PIDto an authentication kiosk in the store and downloads the product serialnumber from the PID to a computer in the kiosk, all as symbolized byblock 741. In alternative embodiments, the user can simply take theproduct to be authenticated to the authentication kiosk and have thekiosk computer read the RF ID tag on the product directly.

Block 743 represents the process of the kiosk computer downloading to afactory host computer the product serial number (and possibly itsclass/species identifier) and the location of the store or other outletto which the reply is to be sent by the factory host computer. Thistransmission is sent via a "secure communication means" (as that term"secure communication means" is used in the claims). The "securecommunication means" can be either: (1) a secure data communicationchannel from the authentication kiosk or elsewhere to the factory hostcomputer, or (2) a means of encrypting the serial number and store orother outlet ID information using a single key encryption algorithm andtransmitting the encryption key to the factory host computer via asecure data communication channel in an authentication kiosk orelsewhere, and then transmitting the encrypted serial number data andstore ID to the factory host computer via an unsecure data communicationchannel such as the public telephone network in an authentication kioskor elsewhere, or (3) a means for encrypting the serial number and storeor outlet ID information using a public key encryption scheme and thentransmitting the public key and the enciphered serial number and outletID to the factory host computer using an unsecure data transmissionchannel in an authentication kiosk or elsewhere. Preferably, the publickey encryption scheme is used as the "secure communication means" sincethis does not require a secure communication channel. Securecommunications means of the three types named above are known and willnot be discussed in great detail here. The details of how the securecommunication with the factory host computer is made is not critical tothe invention, and any secure communication mechanism will suffice topractice this embodiment. However, some discussion of the public keysystem will follow.

Block 745 represents the process carried out by the factory hostcomputer. This process involves decrypting the received serial numberand outlet ID data (or using the plain text message containing this datasent over a secure channel) and comparing the product serial numberreceived from the PID to the serial numbers of all genuine articlesmanufactured by the factory.

Block 747 represents the process carried out by the factory hostcomputer of transmitting a secure, "signed" authentication message backto the outlet ID identified in the secure message received from the PID.If a match is found between the serial number received from the PiD andthe serial number of a genuine article, an "authenticated" message issent back to the outlet ID listed in the secure message received fromthe PID via secure communication means. If no match is found, a"counterfeit" message is sent back. The "authenticated" or "counterfeit"messages are "signed" as that term is used in the public keycryptography systems (or the equivalent in the secret, single key cryptosystems) so that the receiver will know that the "authenticated" or"counterfeit" message actually came from the factory. To understand thislatter concept, please consider the following.

In conventional single key cryptography systems such as the U.S.Government DES standard, a single key is used to both encrypt anddecrypt the plain text message. This means that the single key must besent from the sender to the recipient by a secure communication channel.In electronic, instantaneous communication of the type contemplatedhere, the availability of a secure channel to get the key to the factoryhost computer is a problem. Public telephone lines, which are likely tobe the only instantaneous source available to send data to the factoryhost computer from most outlets, are not secure. A new program calledNautilus which is available on the Internet can convert a PC having aSound Blaster card into an untappable telephone such that if a PC soequipped is placed at both ends of the telephone connection, a securecommunication channel exists. It is within the teachings of theinvention to use a single key system with such a secure channel.

A more elegant solution is the public key crypto system exemplified bythe PGP cryptography software commercially available from ViaCrypt ofPhoenix, Ariz. for MAC, DOS and Unix platforms. In the public keysystem, each user has two keys: one which is public and which can besent by unsecure channels such as public telephone lines, and the otherof which, the secret key, is private and is known only to the user. Eachkey unlocks the code that the other key makes. Knowing the public keydoes not help one deduce the secret key. The public key protocolprovides secure communications without the need for the same kind ofsecure channels that the single key systems require.

Referring to FIG. 41, there is shown a flow chart of the process carriedout by the authentication kiosk computer and the factory host computerto authenticate a part's serial number in secure fashion using thepublic key crypto system. Block 749 represents the process of the kioskcomputer sending its public key to the factory host computer via anunsecure channel such as by modem and public telephone line and thefactory host computer reciprocating by sending its public key back tothe kiosk computer. The kiosk computer then encyphers the product serialnumber obtained from the PID or the product itself and the store IDusing the factory host computer's public key and sends the encyphereddata to the factory host computer via an unsecure telephone/modemconnection, as symbolized by block 751. Nobody can decrypt this message,not even the computer in the authentication kiosk because only thefactory host computer knows the factory host computer's secret key.

Block 753 represents the process carried out by the factory hostcomputer of authenticating the product serial number received from theauthentication kiosk. The factory host computer uses its secret key todecrypt the product serial number and store ID message and compares theproduct serial number to the list of authentic serial numbers ofproducts manufactured by the factory. If a match is found, the factoryhost computer generates a "This product is authenticated" type message.If no match is found, the factory host computer generates a "Thisproduct is counterfeit" message.

Block 757 represents the process carried out by the factory hostcomputer of generating an authentication signature of the authenticationmessage using the factory host computer's secret key. To do this, thefactory host computer "hashes" the authentication message to generate a"fingerprint" of the message and then encrypts the "fingerprint" usingthe factory host computer's secret key. The encrypted "authenticationsignature" will be sent to the authentication kiosk computer where thefactory host computer's public key will be used by the authenticationkiosk's computer to decrypt it. This will prove, if decryption issuccessful, that the message is authentic as having come from thefactory host computer.

Block 759 is the process carried out by the factory host computer ofappending the "authentication signature" to the "authentication message"and then encrypting the combined file with the public key of theauthentication kiosk's computer. Block 761 represents the processcarried out by the factory host computer of sending the encryptedmessage generated in block 759 to the kiosk computer via unsecuremodem/phone line connection.

Block 753 represents the process carried out by the authentication kioskcomputer to decrypt the message and verify that it is genuine, i.e.,that it actually came from the factory host computer. To do this, theauthentication kiosk computer first decrypts the received message usingthe kiosk computer's secret key to get back to the plain text of the"authentication message". Then, the kiosk computer decrypts thesignature portion of the file using the factory host computer's publickey. If this decryption is successful, the "authentication message" isgenuine as it could only have come from the factory host computer asonly the factory host computer has access to the factory host computersecret key.

FIG. 42 represents a process of using PID's and smart cards forcollectible concert/event tickets. Block 765 represents the process of awould-be concert/event attendee paying for tickets to the event. Inblock 767, the ticketing PID or a desktop computer with an RF ID tagreader/writer writes data to an RF ID tag embedded in a smart card whichwill serve as the event ticket. The data written to the RF ID tag willinclude the event identification and date, the number of paid tickets(in some embodiments of this process, one smart card per ticket holderwill be issued), and the section, row and seat number information aswell as an "authentication signature" code similar to the authenticationsignature generated in block 757 in FIG. 41 and generated in a similarway using a hash of the data written to the RF ID tag.

The data written to the RF ID tag can be encrypted in some embodimentsusing the public key of the gate computers that will authenticate thetickets at the event. The gate computers then decrypt the event data,number of seats etc. using the secret keys of the gate computers. Allgate computers will share the same secret key.

If authentication that the tickets came from the computer that issuedthem and not a counterfeiter, each RF ID tag may be written with anauthentication signature. This is done by the computer that issued thetickets by hashing the event data written to the RF ID tag in the ticketand encrypting it with the secret key of the computer that issued theticket. The gate computers will then authenticate the ticket bydecrypting the authentication signature using the public key of thecomputer that issued the tickets.

The smart card tickets will be the size of trading cards and will haveevent related artwork printed thereon or other art of collectible valuesuch as a picture of Cal Ripken as a rookie.

Block 769 represents the process carried out by a computer at the eventgate to authenticate the ticket. Preferably, a PID carried by an usherat the event entrance will be used to read the RF ID tag of the smartcard ticket of each attendee and decrypt the data thereon andauthenticate it or simply to authenticate it in the way described above.This process can also be done by a gate computer that controls anelectrically operated door to admit the attendee by authenticating theticket and automatically opening the gate if the ticket is authentic.

Ushers with PID's can then authenticate the section, row and seatinformation if necessary, as represented by block 771.

Referring to FIG. 43(A), 43(B) and 43(C), there is shown a PCMCIA/magstripe credit card/smart card receiver apparatus. The card receiverapparatus 773 is a molded plastic framework have guide slots 775 and777. Guide slot 775 is sized to receive a PCMCIA card of type I, II orIII configuration. Guide slot 777 is sized to receive a PCMCIA cardsized plastic card guide insert 789 which has a guide slot therein for acredit card 781. The back edge of the receiver apparatus has a PCMCIAbus 779 comprised of a plurality of pin formed therein which mates withfemale ports of a PCMCIA bus connector on the back edge of a PCMCIA cardinserted into slot 775. A plurality of pins 781 form a connector whichelectrically connects the PCMCIA bus and other electrical components inthe receptacle to the PID. The other electrical components comprise apair of one or two channel magnetic heads 783 and 785 and, in someembodiments intended for use with conventional smart cards, a set ofelectrical contacts (not shown). The electrical contacts are mounted onthe card guide insert in the proper position to make electrical contactwith the electrical contacts on the back side of a smart card. Themagnetic heads are mounted to a printed circuit board 787 whichparallels the plane of the underside of the card receiver 773 when it ismounted in the PID. The positioning of the magnetic heads on the printedcircuit board and the position of the printed circuit board relative tothe card guide insert is such that when a credit card is slid into thecard guide insert, the magnetic head will be directly under the magneticstripe on the card and close enough to read the magnetic transitionsrecorded on the magnetic stripe and convert them to signals which can bedecoded by the conventional magnetic stripe card reader interface 512 inFIG. 19 into ASCII characters. The card guide insert 789 has a pair ofslots 791 and 793 formed therein which are sized and positioned so as toform an opening above the magnetic heads when the card guide insert isinserted into the receiver apparatus 773 such that no part of the cardguide insert lies between the magnetic heads and the magnetic stripe onthe credit card. Two magnetic heads are used so that no matter whatorientation in which the card is inserted, one of the magnetic headswill be positioned under the magnetic stripe.

Referring to FIG. 44, there is shown a block diagram of a typical RF IDtag reader from the class of devices that can be used as the RF ID tagreader 314 in FIG. 19 (hereafter referred to as the reader). The readerhas a range of from a few millimeters to several meters depending uponsize of the RF ID tag (hereafter referred to as a transponder),operating frequency, and whether the transponder is a passive or activetype. The reader is connected to the microcomputer 320 in FIG. 19 via aserial data communications link 314A. Transponders of a passive varietyare those discussed above which generate power to operate the circuitstherein from an excitation signal transmitted from the reader. There isanother class of transponder however of an active class which some formof energy source independent of the reader such as a small primary cellsuch as a lithium battery.

Although the invention has been disclosed in terms of the preferred andalternative alternatives of doing the same functions described herein.All such alternatives are intended to be included within the scope ofthe claims appended hereto.

What is claimed is:
 1. A portable information gathering apparatuscomprising:a housing small enough to be carried by hand; a barcode scanengine mounted in said housing which is capable of scanning barcodes anddecoding and outputting alphanumeric characters encoded in saidbarcodes; a display mounted in said housing; a memory mounted in saidhousing; a touchscreen input device mounted in said housing andsuperimposed over said display for receiving user input; a microcomputermounted in said housing and coupled to and programmed to control saidbarcode scan engine, said display, said memory and said touchscreeninput device, and programmed to receive decoded alphanumeric charactersfrom said barcode scan engine and store them in said memory, andprogrammed to display data on said display and to receive data from saidtouchscreen input device and use said data received from saidtouchscreen input device to control operation of said microcomputer; anRF ID tag reader coupled to and controlled by said microcomputer,wherein said RF ID tag reader comprises a transmitter which can send RFtransmissions which both supply power and commands to a passive, RF IDtag in the form of an integrated circuit which has no power supply ofits own, said RF transmissions being processed in said passive RF ID tagto supply power to a receiver and a transmitter in said ID tag, saidcommands causing said transmitter in said RF ID tag to transmit productinformation back to a receiver in said RF ID tag reader using power fromsaid RF transmissions originating in said RF ID tag reader, and whereinsaid microcomputer is programmed to control transmissions by said RF IDtag reader to interrogate RF ID tags and receive product informationfrom said RF ID tag reader derived from transmissions from said RF IDtag and store said product information in memory, and wherein saidmicrocomputer is also programmed to control said RF ID tag reader tosend a RF transmission to cause said RF ID tags on items that have beenpaid for to write data therein indicating said items have been paid forsuch that said RF ID tags do not cause activation of store alarms undercontrol of RF ID tag readers functioning as part of store securitysystems at store exits when said items are transported out said storeexits.
 2. The apparatus of claim 1 further comprising a thermal printercoupled to and controlled by said microcomputer, and wherein saidmicrocomputer is programmed to control said printer to print any datadesired in print form by a user.
 3. The apparatus of claim 1 furthercomprising an infrared transceiver coupled to and controlled by saidmicrocomputer, and wherein said microcomputer is programmed to controlsaid infrared transceiver to send data by modulated infrared radiationand to control said infrared transceiver to output data for storage insaid memory which has been received as modulated infrared radiation. 4.The apparatus of claim 3 wherein said portable information gatheringapparatus has a rechargeable battery and electrical contacts coupled tosaid rechargeable battery through which charging current may be suppliedto recharge said battery, and further comprising a detachable base unitwhich mates with said portable information gathering apparatus and whichhas electrical contacts which make electrical contacts with saidelectrical contacts on said portable information gathering apparatuswhen said base unit is mated with said portable information gatheringapparatus, said base unit having a power converter having a DC outputcoupled to said electrical contacts on said base unit and having aninput for receiving AC power from an electrical utility, said powerconverter for converting said AC power to a DC voltage across saidelectrical contacts on said base unit which is adequate to charge saidrechargeable battery and to power the circuitry in said portableinformation gathering apparatus.
 5. The apparatus of claim 4 whereinsaid base unit has a local area network interface circuit for couplingsaid base unit to a host computer elsewhere on a local area network, andhas an infrared transceiver coupled to said local area network interfacecircuit and located in said base unit so as to be in line of sightcommunication with said infrared transceiver in said portableinformation gathering apparatus, said microcomputer also beingprogrammed to download information to said host computer via saidinfrared transceiver and said local area network interface uponreceiving a download command.
 6. A portable information gatheringapparatus comprising:a housing small enough to be carried by hand; abarcode scan engine mounted in said housing which is capable of scanningbarcodes and decoding and outputting alphanumeric characters encoded insaid barcodes: a display mounted in said housing: a memory mounted insaid housing: a touchscreen input device mounted in said housing andsuperimposed over said display for receiving user input: a microcomputermounted in said housing and coupled to and programmed to control saidbarcode scan engine, said display, said memory and said touchscreeninput device, and programmed to receive decoded alphanumeric charactersfrom said barcode scan engine and store them in said memory, andprogrammed to display data on said display and to receive data from saidtouchscreen input device and use said data received from saidtouchscreen input device to control operations of said microcomputer;and further comprising an infrared transceiver coupled to and controlledby said microcomputer, and wherein said microcomputer is programmed tocontrol said infrared transceiver to send data by modulated infraredradiation and to control said infrared transceiver to output data forstorage in said memory which has been received as modulated infraredradiation; and wherein said portable information gathering apparatus hasa rechargeable battery and electrical contacts coupled to saidrechargeable battery through which charging current may be supplied torecharge said battery, and further comprising a detachable base unitwhich mates with said portable information gathering apparatus and whichhas electrical contacts which make electrical contact with saidelectrical contacts on said portable information gathering apparatuswhen said base unit is mated with said portable information gatheringapparatus, said base unit having a power converter hiving a DC outputcoupled to said electrical contacts on said base unit and having aninput for receiving AC power from an electrical utility, said powerconverter for converting said AC power to DC voltage across saidelectrical contacts on said base unit which is adequate to charge saidrechargeable battery and to power the circuitry in said portableinformation gathering apparatus: and wherein said base unit has a localarea network interface circuit for coupling said base unit to a hostcomputer elsewhere on a local area network, and has an infraredtransceiver coupled to said local area network interface circuit andlocated in said base unit so as to be in line of sight communicationwith said infrared transceiver in said portable information gatheringapparatus, said microcomputer also being programmed to downloadinformation to said host computer via said infrared transceiver and saidlocal area network interface upon receiving a download command; andwherein said base unit has a desktop support unit which is rotatablycoupled to a charging mount which mates with said portable informationgathering apparatus, said charging mount containing said electricalcontacts for charging said portable information gathering apparatus aswell as powering the circuits therein, said charging mount beingrotatable relative to said desktop support unit under the influence of aknob, and wherein said barcode scanning engine has a barcode sensorwhich receives light reflected from a barcode through a window in thetop of said housing, and wherein said charging mount mates with saidhousing in such a way and is sufficiently rotatable as to rotate saidpersonal information gathering device to a horizontal orientation suchthat light reflected from a barcode travelling parallel to the surfaceof the earth can be sensed by said barcode sensor.
 7. A portableinformation gathering apparatus comprising:a housing small enough to becarded by hand; a barcode scan engine mounted in said housing which iscapable of scanning barcodes and decoding and outputting alphanumericcharacters encoded in said barcodes; a display mounted in said housing;a memory mounted in said housing; a touchscreen input device mounted insaid housing and superimposed over said display for receiving userinput; a microcomputer mounted in said housing and coupled to andprogrammed to control said barcode scan engine, said display, saidmemory and said touchscreen input device, and programmed to receivedecoded alphanumeric characters from said barcode scan engine and storethem in said memory, and programmed to display data on said display andto receive data from said touchscreen input device and use said datareceived from said touchscreen input device to control operations ofsaid microcomputer; and further comprising an infrared transceivercoupled to and controlled by said microcomputer, and wherein saidmicrocomputer is programmed to control said infrared transceiver to senddata by modulated infrared radiation and to control said infraredtransceiver to output data for storage in said memory which has beenreceived as modulated infrared radiation; and wherein said portableinformation gathering apparatus has a rechargeable battery andelectrical contacts coupled to said rechargeable battery through whichcharging current may be supplied to recharge said battery, and furthercomprising a detachable base unit which mates with said portableinformation gathering apparatus and which has electrical contacts whichmake electrical contact with said electrical contacts on said portableinformation gathering apparatus when said base unit is mated with saidportable information gathering apparatus, said base unit having powerconverter having a DC output coupled to said electrical contacts on saidbase unit and having an input for receiving AC power from an electricalutility, said power converter for converting said AC power to a DCvoltage across said electrical contacts on said base unit which isadequate to charge said rechargeable battery and to power the circuitryin said portable Information gathering apparatus: and wherein said baseunit has a local area network interface circuit for coupling said baseunit to a host computer elsewhere on a local area network, and has aninfrared transceiver coupled to said local area network interfacecircuit and located in said base unit so as to be in line of sightcommunication with said infrared transceiver in said portableinformation gathering apparatus, said microcomputer also beingprogrammed to download information to said host computer via saidinfrared transceiver and said local area network interface uponreceiving a download command; and wherein said base unit has a desktopsupport unit which is rotatably coupled to a charging mount which mateswith said portable information gathering apparatus, said charging mountcontaining said electrical contacts for charging and portableinformation gathering apparatus as well as powering the circuitstherein, said charging mount being rotatable relative to said desktopsupport unit under the influence of a knob, and wherein said barcodescanning engine has a barcode sensor which receives light reflected froma barcode through window in the top of said housing, and wherein saidcharging mount mates with said housing in such a way and is sufficientlyrotatable as to rotate said personal information gathering device to ahorizontal orientation such that light reflected from a barcodetravelling parallel to the surface of the earth can be sensed by saidbarcode sensor; and wherein said base unit has a radio transceivercoupled to said infrared transceiver for bidirectionally communicatingdata received from a portable information gathering device to anothercomputer via an RF link.
 8. A method of using a portable informationgathering device, said information gathering device comprising:a housingsmall enough to be carried by hand;barcode scan engine mounted in saidhousing which is capable of scanning barcodes and decoding andoutputting alphanumeric characters encoded in said barcodes; a displaymounted in said housing; a memory mounted in said housing; a touchscreeninput device mounted in said housing and superimposed over said displayfor receiving user input; a microcomputer mounted in said housing andcoupled to and programmed to control said barcode scan engine, saiddisplay, said memory and said touchscreen input device, and programmedto receive decoded alphanumeric characters from said barcode scan engineand store them in said memory, and programmed to display data on saiddisplay and to receive data from said touchscreen input device and usesaid data received from said touchscreen input device to controloperations of said microcomputer; and further comprising a RF ID tagreader coupled to and controlled by said microcomputer, and wherein saidmicrocomputer is programmed to control transmissions by said RF ID tagreader to interrogate RF ID tags on items within range of said RF ID tagreader and receive data from said RF ID tag reader derived fromtransmissions from said RF ID tag and store said data in memory; andfurther comprising a PCMCIA/credit card/smart card slot and a slotinterface means for communicating with either a PCMCIA card, a creditcard with a magnetic stripe or a smart card, said slot interface meansincluding a smart card interface means coupled to said microcomputer,and wherein said microcomputer is programmed to control said slotinterface means to extract data from or write data to a smart card orPCMCIA card placed in said PCMCINA/credit card/smart card slot or toread data from the magnetic stripe of a credit card placed in saidPCMCIA/credit card/smart card; said method comprising the stepsof:gathering information about products in a store using said portableinformation gathering device by physically carrying said portableinformation gathering device to the locations of various products ordisplays of products to be purchased and either scanning barcodes on theproducts to be purchased or their packages or interrogating an RF ID tagembedded in a product or attached to or embedded in the package of theproduct, and storing the gathered information in said memory of saidportable information gathering device; after shopping is completed,downloading the information gathered from said products from said memoryto a host computer; receiving and displaying on said display of saidportable information gathering device data from said host computerregarding the descriptions of the items to be purchased and the ordertotal; receiving payment for said products; sending a security tagdeactivation signal from said host computer to security tag deactivationapparatus; deactivating all RF ID tag security tags on the productswhich have been paid for using said security tag deactivation apparatusupon receipt of said security tag deactivation signal; monitoring allexits from said store for transition therethrough of any RF ID typesecurity tag which has not been deactivated using a means for monitoringfor active security tags.
 9. The method of claim 8 wherein the step ofreceiving payment for said products, comprises the steps of:displayingon said display a query as to the manner in which the user desires topay for the products to be purchased; receiving user input via saidtouchscreen indicating the manner in which the user desires to pay forthe products to be purchased; if the user selects payment by credit cardand places a credit card in said PCMCIA/credit card/smart card slot,controlling said portable information gathering device to read data fromthe magnetic stripe of said credit card and store it said memory as wellas transmit said data to said host computer; controlling said hostcomputer to automatically establish communication with a credit cardprocessing center and transmit data regarding the proposed purchasethereto and obtain therefrom a purchase authorization code; after saidpurchase authorization code is received, controlling said host computerto send said security tag deactivation signal to said security tagdeactivation apparatus.
 10. The method of claim 8 wherein the step ofreceiving payment for said products, comprises the steps of:displayingon said display a query as to the manner in which the user desires topay for the products to be purchased; receiving user input via saidtouchscreen indicating the manner in which the user desires to pay forthe products to be purchased; if the user selects payment by smart cardand places a credit card in said PCMCIA/credit card/smart card slot,controlling said portable information gathering device to read data fromthe smart card regarding the current balance available for purchases andstores said data in said memory; controlling said portable informationgathering device to compare the current balance available for purchaseto the order total received from said host computer; if the order totalis less than the current balance available for purchase, controllingsaid portable information gathering device to subtract the order totalfrom the current balance available for purchase to derive a new balance,and to write said new balance to said smart card; after said balanceavailable for purchase has been determined to be sufficient to cover theamount of the order, controlling said portable information gatheringdevice to generate and send said security tag deactivation signal tosaid security tag deactivation apparatus or to cause said host computerto generate and send said security tag deactivation signal to saidsecurity tag deactivation apparatus if the balance available forpurchase is not sufficient to cover said order total received from saidhost computer, controlling said portable information gathering device todisplay a message on said display advising the user of this fact andquerying for a new method of payment; controlling said portableinformation gathering device to receive data from said touchscreenindicating the user's selection of the type of payment to be used andvectoring processing to a routine for controlling said portableinformation gathering device appropriately to process the new method ofpayment.
 11. The method of claim 8 wherein the step of receiving paymentfor said products, comprises the steps of:displaying on said display aquery as to the manner in which the user desires to pay for the productsto be purchased; receiving user input via said touchscreen indicatingthe manner in which the user desires to pay for the products to bepurchased; if the user selects payment by smart card and places a smartcard in said PCMCIA/credit card/smart card slot, controlling saidportable information gathering device to read data from the smart cardregarding the current balance available for purchases and stores saiddata in said memory; controlling said portable information gatheringdevice to compare the current balance available for purchase to theorder total received from said host computer; if the order total is lessthan the current balance available for purchase, controlling saidportable information gathering device to subtract the order total fromthe current balance available for purchase to derive a new balance, andto write said new balance to said smart card; after said balanceavailable for purchase has been determined to be sufficient to cover theamount of the order, controlling said portable information gatheringdevice to generate and send said security tag deactivation signal tosaid security tag deactivation apparatus or to cause said host computerto generate and send said security tag deactivation signal to saidsecurity tag deactivation apparatus if the balance available forpurchase is not sufficient to cover said order total received from saidhost computer, controlling said portable information gathering device todisplay a message on said display advising the user of this fact andquerying for a new method of payment; controlling said portableinformation gathering device to receive data from said touchscreenindicating the user's selection of the type of payment to be used andvectoring processing to a routine for controlling said portableinformation gathering device appropriately to process the new method ofpayment.